class Baidupush::PushNotice

Constants

DEFAULT_ANDRIOD_FIELD

Andriod的推送的特有消息的初始化设置

DEFAULT_API

类初始值

DEFAULT_BINDLIST

Bindlist查询函数的初始化设置

DEFAULT_DELETE_TAG
DEFAULT_FETCH_TAG
DEFAULT_IOS_FIELD

apple的推送消息初始化设置

DEFAULT_PUSH_CONFIG

推送类型函数的初始化设置

DEFAULT_REQUREST_BAIDU_METHOD

所有请求百度的函数都需初始化的设置

DEFAULT_SET_TAG

设置标签函数的初始化设置

HTTP_METHOD_GET
HTTP_METHOD_POST

To change this template use File | Settings | File Templates.

Public Class Methods

new(options={}) click to toggle source
# File lib/Baidupush/push_notice.rb, line 13
def initialize(options={})
  options = YAML.load(File.expand_path('../config/baidu_cloud_push.yml', __FILE__)) unless options&&!File.exist?(File.expand_path('../config/baidu_cloud_push.yml', __FILE__))
  @options = _params_default(options,DEFAULT_API)
end

Public Instance Methods

get_android_msg(title,description,custom_content={},options={}) click to toggle source

“title” : “hello” ,

“description: "hello world"

//android自定义字段

“custom_content”: {

"key1":"value1",
"key2":"value2"

}, 生成用于Andriod发送的消息

Augment:
# File lib/Baidupush/push_notice.rb, line 174
def get_android_msg(title,description,custom_content={},options={})
  options = _params_default(options,DEFAULT_ANDRIOD_FIELD)
  params = {}
  params.merge!("title"=>title)
  params.merge!("description"=>description)
  options.each do |key,value|
    params.merge!({key.to_s=>value})
  end
  params.merge!("custom_content"=>custom_content)
  #p "Android_msg: #{params}"
  params
end
get_api_key() click to toggle source

获取apikey

# File lib/Baidupush/push_notice.rb, line 24
def get_api_key
  @options[:api_key]
end
get_ios_msg(msg,options={}) click to toggle source
# File lib/Baidupush/push_notice.rb, line 187
def get_ios_msg(msg,options={})
  options = _params_default(options,DEFAULT_IOS_FIELD)
  if msg.class!=Hash
    raise RuntimeError,"推送苹果的消息应为Hash"
  end
  params = {:aps=>options}
  msg.each do |key,value|
    params.merge!(key=>value)
  end
end
get_push_name() click to toggle source

获取配置的应用名

# File lib/Baidupush/push_notice.rb, line 29
def get_push_name
  @options[:name]
end
get_secret_key() click to toggle source

获取secretkey

# File lib/Baidupush/push_notice.rb, line 19
def get_secret_key
  @options[:secret_key]
end
push_msg_andriod(send_andriod_msg,options={}) click to toggle source

options: method string 是 方法名,必须存在:push_msg。 apikey string 是 访问令牌,明文AK,可从此值获得App的信息,配合sign中的sk做合法性身份认证。 user_id string 否 用户标识,在Android里,channel_id + userid指定某一个特定client。不超过256字节,如果存在此字段,则只推送给此用户。 push_type uint 是 推送类型,取值范围为:1~3 1:单个人,必须指定user_id 和 channel_id (指定用户的指定设备)或者user_id(指定用户的所有设备)

2:一群人,必须指定 tag

3:所有人,无需指定tag、user_id、channel_id

channel_id uint 否 通道标识 tag string 否 标签名称,不超过128字节 device_type uint 否 设备类型,取值范围为:1~5 云推送支持多种设备,各种设备的类型编号如下:

1:浏览器设备;

2:PC设备;

3:Andriod设备;

4:iOS设备;

5:Windows Phone设备;

如果存在此字段,则向指定的设备类型推送消息。 默认为android设备类型。

# File lib/Baidupush/push_notice.rb, line 225
def push_msg_andriod(send_andriod_msg,options={})
  options = _params_default(options,DEFAULT_REQUREST_BAIDU_METHOD)
  options = _params_default(options,DEFAULT_PUSH_CONFIG)
  options[:msg_keys] = Time.now.to_i.to_s + ::SecureRandom.uuid.gsub!("-","")
  options.merge!(:messages => send_andriod_msg)
  request_server(options)
end
push_msg_ios(send_ios_msg,options={}) click to toggle source

deploy_status: 1:开发 2:生产

# File lib/Baidupush/push_notice.rb, line 235
def push_msg_ios(send_ios_msg,options={})
  options = _params_default(options,DEFAULT_REQUREST_BAIDU_METHOD)
  options = _params_default(options,DEFAULT_PUSH_CONFIG)
  options[:msg_keys] = Time.now.to_i.to_s + ::SecureRandom.uuid.gsub!("-","")
  options.merge!(:messages => send_ios_msg)
  request_server(options)
end
query_bindlist(options={}) click to toggle source
查询设备、应用、用户与百度Channel的绑定关系。
Arguments:
  method: (String)        必须      方法名,必须存在:query_bindlist。
  apikey: (String)        必须      访问令牌,明文AK,可从此值获得App的信息,配合sign中的sk做合法性身份认证
  user_id:        (String)       不必须    用户标识。不超过256字节。如果存在此字段,则只返回与该用户相关的绑定关系
  device_type:    (String)   不必须        百度Channel支持多种设备,各种设备的类型编号如下:

1:浏览器设备; 2:PC设备; 3:Andriod设备; 4:iOS设备; 5:Windows Phone设备; 如果存在此字段,则只返回该设备类型的绑定关系。 默认不区分设备类型。

start:   (Integer) 不必须     查询起始页码,默认为0。
limit:   (Integer) 不必须     一次查询条数,默认为10。
timestamp: (integer)     必须  用户发起请求时的unix时间戳。本次请求签名的有效时间为该时间戳+10分钟。
sign:    (String)   必须        调用参数签名值,与apikey成对出现。
expires: (Integer)       必须    用户指定本次请求签名的失效时间。格式为unix时间戳形式。
v:      (Integer)        不必须    API版本号,默认使用最高版本。
# File lib/Baidupush/push_notice.rb, line 54
def query_bindlist(options={})
  options = _params_default(options,DEFAULT_REQUREST_BAIDU_METHOD)
  options = _params_default(options,DEFAULT_BINDLIST)
  request_server(options)
end
set_push_config(options={}) click to toggle source

设置推送的设置 并返回 Arguments:

method:  (String) 是       方法名,必须存在:push_msg。
apikey:  (String) 是       访问令牌,明文AK,可从此值获得App的信息,配合sign中的sk做合法性身份认证。
user_id: (String)        否      用户标识,在Android里,channel_id + userid指定某一个特定client。不超过256字节,如果存在此字段,则只推送给此用户。
push_type:       (Integer)     是   推送类型,取值范围为:1~3
  1:单个人,必须指定user_id 和 channel_id (指定用户的指定设备)或者user_id(指定用户的所有设备)

  2:一群人,必须指定 tag

  3:所有人,无需指定tag、user_id、channel_id

channel_id:      (Integer)    否  通道标识
tag:     (String)    否  标签名称,不超过128字节
device_type:     (Integer)   否 设备类型,取值范围为:1~5
  云推送支持多种设备,各种设备的类型编号如下:

  1:浏览器设备;

  2:PC设备;

  3:Andriod设备;

  4:iOS设备;

  5:Windows Phone设备;

如果存在此字段,则向指定的设备类型推送消息。 默认为android设备类型。

# File lib/Baidupush/push_notice.rb, line 157
def set_push_config(options={})
  push_config = _params_default(options,DEFAULT_PUSH_CONFIG)
  push_config
end
tag_delete(options={}) click to toggle source

服务端删除用户标签。特别地,当user_id被提交时,服务端将只会完成解除该用户与tag绑定关系的操作。 Arguments:

method:  (String) 是       方法名,必须存在:delete_tag。
apikey:  (String) 是       访问令牌,明文AK,可从此值获得App的信息,配合sign中的sk做合法性身份认证。
tag:     (String)    是  标签名,最长128字节。
user_id: (String)        否      用户标识,最长256字节。
timestamp:       (Integer)     是   用户发起请求时的unix时间戳。本次请求签名的有效时间为该时间戳+10分钟。
sign:    (String)   是 调用参数签名值,与apikey成对出现。详细用法,请参考:签名计算算法

expires  uint     否   用户指定本次请求签名的失效时间。格式为unix时间戳形式。
v        uint   否 API版本号,默认使用最高版本。
# File lib/Baidupush/push_notice.rb, line 114
def tag_delete(options={})
  options = _params_default(options,DEFAULT_REQUREST_BAIDU_METHOD)
  options = _params_default(options,DEFAULT_DELETE_TAG)
  request_server(options)
end
tag_fetch(options={}) click to toggle source

App Server查询应用标签。 Arguments:

method:  (String) 是       方法名,必须存在:fetch_tag。
apikey:  (String) 是       访问令牌,明文AK,可从此值获得App的信息,配合sign中的sk做合法性身份认证。
name:    (String)   否 标签名称。
start:   (Integer) 否       查询页码,默认为0。
limit:   (Integer) 否       一次查询条数,默认为10。
timestamp: (Integer)     是   用户发起请求时的unix时间戳。本次请求签名的有效时间为该时间戳+10分钟。
sign:    (String)   是 调用参数签名值,与apikey成对出现。详细用法,请参考:签名计算算法

expires: (Integer)       否     用户指定本次请求签名的失效时间。格式为unix时间戳形式。
v:       (Integer)     否   API版本号,默认使用最高版本。
# File lib/Baidupush/push_notice.rb, line 96
def tag_fetch(options={})
  options = _params_default(options,DEFAULT_REQUREST_BAIDU_METHOD)
  options = _params_default(options,DEFAULT_FETCH_TAG)
  request_server(options)
end
tag_set(options={}) click to toggle source
# File lib/Baidupush/push_notice.rb, line 77
def tag_set(options={})
  options = _params_default(options,DEFAULT_REQUREST_BAIDU_METHOD)
  options = _params_default(options,DEFAULT_SET_TAG)
  request_server(options)
end

Private Instance Methods

_params_default(options,_default) click to toggle source

初始化options

# File lib/Baidupush/push_notice.rb, line 276
def _params_default(options,_default)
  _default.keys.each do |key|
    options[key] = options[key.to_s]||options[key]
    options[key] = options[key]||_default[key]
  end
  options
end
get_params(options,http_method) click to toggle source

获取请求参数

# File lib/Baidupush/push_notice.rb, line 256
def get_params(options,http_method)
  options.merge!(:apikey=>@options[:api_key])
  options.merge!(:sign=>get_sign(options,http_method))
  params = options
  params
end
get_sign(options,url_method) click to toggle source
# File lib/Baidupush/push_notice.rb, line 251
def get_sign(options,url_method)
  Base.get_sign(options,@options[:secret_key],url_method,@options[:url])
end
request_server(options) click to toggle source

请求服务器

# File lib/Baidupush/push_notice.rb, line 264
def request_server(options)
  case options[:url_method]
    when HTTP_METHOD_POST
      Base.http_post(@options[:url],get_params(options,HTTP_METHOD_POST))
    when HTTP_METHOD_GET
      Base.http_get(@options[:url],get_params(options,HTTP_METHOD_GET))
  end
end