class JPush::Pusher

Public Instance Methods

get_cid(count=nil, type=nil) click to toggle source

GET api.jpush.cn/v3/push/cid[?count=n[&type=xx]] 获取cid:推送唯一标识符 docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#cid

# File lib/jpush/pusher.rb, line 30
def get_cid(count=nil, type=nil)
  params = {
    count: count,
    type: type
  }.select { |_, value| !value.nil? }
  url = base_url + 'cid'
  Http::Client.get(@jpush, url, params: params)
end
push(push_payload) click to toggle source

POST api.jpush.cn/v3/push 向某单个设备或者某设备列表推送一条通知、或者消息

# File lib/jpush/pusher.rb, line 18
def push(push_payload)
  if push_payload.cid.nil?
    cid_response = get_cid(count=1, type='push')
    cid = cid_response.body['cidlist'].at(0)
    push_payload.set_cid(cid)
  end
  send_push(base_url, push_payload)
end
push_batch_alias(single_push_payloads) click to toggle source

POST api.jpush.cn/v3/push/batch/alias/single 针对Alias方式批量单推(VIP专属接口) docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#vip

# File lib/jpush/pusher.rb, line 58
def push_batch_alias(single_push_payloads)
  cid_response = get_cid(count=single_push_payloads.size, type='push')
  cidlist = cid_response.body['cidlist']
  body = {}
  body['pushlist'] = {}
  single_push_payloads.each { |payload|
    cid = cidlist.pop
    body['pushlist'][cid] = payload.to_hash
  }
  url = base_url + 'batch/alias/single'
  Http::Client.post(@jpush, url, body: body)
end
push_batch_regid(single_push_payloads) click to toggle source

POST api.jpush.cn/v3/push/batch/regid/single 针对RegID方式批量单推(VIP专属接口) docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#vip

# File lib/jpush/pusher.rb, line 42
def push_batch_regid(single_push_payloads)
  cid_response = get_cid(count=single_push_payloads.size, type='push')
  cidlist = cid_response.body['cidlist']
  body = {}
  body['pushlist'] = {}
  single_push_payloads.each { |payload|
    cid = cidlist.pop
    body['pushlist'][cid] = payload.to_hash
  }
  url = base_url + 'batch/regid/single'
  Http::Client.post(@jpush, url, body: body)
end
validate(push_payload) click to toggle source

POST api.jpush.cn/v3/push/validate 验证推送调用是否能够成功,与推送 API 的区别在于:不向用户发送任何消息

# File lib/jpush/pusher.rb, line 11
def validate(push_payload)
  url = base_url + 'validate'
  send_push(url, push_payload)
end

Private Instance Methods

base_url() click to toggle source
# File lib/jpush/pusher.rb, line 79
def base_url
  'https://api.jpush.cn/v3/push/'
end
send_push(url, push_payload) click to toggle source
# File lib/jpush/pusher.rb, line 73
def send_push(url, push_payload)
  push_payload = push_payload.is_a?(JPush::Push::PushPayload) ? push_payload : nil
  body = push_payload.to_hash
  Http::Client.post(@jpush, url, body: body)
end