class UmengPush::Client
Attributes
app_master_secret[RW]
appkey[RW]
platform[RW]
production_mode[RW]
Public Class Methods
android()
click to toggle source
# File lib/umeng_push/client.rb, line 24 def self.android Client.new( "android", UmengPush.configuration.android_appkey, UmengPush.configuration.android_app_master_secret, UmengPush.configuration.production_mode ) end
iOS()
click to toggle source
# File lib/umeng_push/client.rb, line 15 def self.iOS Client.new( "iOS", UmengPush.configuration.ios_appkey, UmengPush.configuration.ios_app_master_secret, UmengPush.configuration.production_mode ) end
new(platform, appkey, app_master_secret, production_mode=false)
click to toggle source
# File lib/umeng_push/client.rb, line 8 def initialize(platform, appkey, app_master_secret, production_mode=false) @platform = platform @appkey = appkey @app_master_secret = app_master_secret @production_mode = production_mode end
Public Instance Methods
broadcast(params={})
click to toggle source
广播
# File lib/umeng_push/client.rb, line 59 def broadcast(params={}) send_message(params.merge({ type: "broadcast" })) end
cancel_task(task_id)
click to toggle source
取消任务
# File lib/umeng_push/client.rb, line 83 def cancel_task(task_id) post("/api/cancel", { appkey: appkey, timestamp: timestamp, task_id: task_id }) end
check_task(task_id)
click to toggle source
查询任务
# File lib/umeng_push/client.rb, line 74 def check_task(task_id) post("/api/status", { appkey: appkey, timestamp: timestamp, task_id: task_id }) end
groupcast(filter={}, params={})
click to toggle source
组播
# File lib/umeng_push/client.rb, line 66 def groupcast(filter={}, params={}) send_message(params.merge({ type: "groupcast", filter: filter })) end
listcast(device_tokens=[], params={})
click to toggle source
组播
# File lib/umeng_push/client.rb, line 51 def listcast(device_tokens=[], params={}) send_message(params.merge({ type: "listcast", device_tokens: device_tokens.join(",") })) end
send_message(params={})
click to toggle source
消息发送
# File lib/umeng_push/client.rb, line 34 def send_message(params={}) post("/api/send", params.merge({ appkey: appkey, timestamp: timestamp, production_mode: production_mode })) end
unicast(device_token, params={})
click to toggle source
单播
# File lib/umeng_push/client.rb, line 43 def unicast(device_token, params={}) send_message(params.merge({ type: "unicast", device_tokens: device_token })) end
Private Instance Methods
check_response!(response_body_json)
click to toggle source
# File lib/umeng_push/client.rb, line 107 def check_response!(response_body_json) if response_body_json['ret'] != 'SUCCESS' raise ResponseError.new(response_body_json['data']['error_code'], data: response_body_json['data']) end end
compact_params(params)
click to toggle source
# File lib/umeng_push/client.rb, line 121 def compact_params(params) custom_compact = Proc.new { |k, v| v.delete_if(&custom_compact) if v.kind_of?(Hash); v.nil? } params.delete_if &custom_compact end
post(url, payload)
click to toggle source
# File lib/umeng_push/client.rb, line 92 def post(url, payload) params = compact_params(payload) sign = sign(url, params) response = nil request = HTTPI::Request.new request.url = "#{UmengPush::HOST}#{url}?sign=#{sign}" request.open_timeout = 5 request.read_timeout = 5 request.body = params.to_json response = HTTPI.post(request) response_body_json = JSON.load(response.body) check_response!(response_body_json) response_body_json end
sign(url, payload)
click to toggle source
# File lib/umeng_push/client.rb, line 113 def sign(url, payload) Digest::MD5.hexdigest('POST' + UmengPush::HOST + url + payload.to_json + app_master_secret) end
timestamp()
click to toggle source
# File lib/umeng_push/client.rb, line 117 def timestamp Time.now.to_i.to_s end