向某单个设备或者某设备列表推送一条通知、或者消息。
推送的内容只能是 JSON 表示的一个推送对象。
调用地址:
POST
https://api.jpush.cn/v3/push
curl --insecure -X POST -v https://api.jpush.cn/v3/push -H "Content-Type: application/json" -u "7d431e42dfa6a6d693ac2d04:5e987ac6d2e04d95a9d8f0d1" -d '{"platform":"all","audience":"all","notification":{"alert":"Hi,JPush!"}}'> POST /v3/push HTTP/1.1> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
< HTTP/1.1 200 OK
< Content-Type: application/json
{"sendno":"18","msg_id":"1828256757"}
HTTP Header(头)里加一个字段(Key/Value对):
Authorization: Basic base64_auth_string
其中 base64_auth_string 的生成算法为:base64(appKey:masterSecret)
即,对 appKey 加上冒号,加上 masterSecret 拼装起来的字符串,再做 base64 转换。
推送校验 API
POST
https://api.jpush.cn/v3/push/validate
该 API 只用于验证推送调用是否能够成功,与推送 API 的区别在于:不向用户发送任何消息。 其他字段说明:同推送 API。
一个推送对象,以 JSON 格式表达,表示一条推送相关的所有信息。
示例与说明
"platform":
"all",
"audience": {
"tag": [
"深圳",
"notification": {
"android": {
"alert":
"Hi, JPush!",
"title":
"Send to Android",
"builder_id":
1,
"extras": {
"newsid":
321
"ios": {
"alert":
"Hi, JPush!",
"sound":
"default",
"badge":
"+1",
"extras": {
"newsid":
321
"message": {
"msg_content":
"Hi,JPush",
"content_type":
"text",
"title":
"msg",
"extras": {
"key":
"value"
"options": {
"time_to_live":
60,
"apns_production":
false
关键字选项含义
platform
推送平台设置
audience
推送设备指定
notification
通知内容体。是被推送到客户端的内容。与 message 一起二者必须有其一,可以二者并存
message
消息内容体。是被推送到客户端的内容。与 notification 一起二者必须有其一,可以二者并存
options
platform
JPush 当前支持 Android, iOS, Windows Phone 三个平台的推送。其关键字分别为:"android", "ios", "winphone"。
如果目标平台为 iOS 平台 需要在 options 中通过 apns_production 字段来制定推送环境。True 表示推送生产环境,False 表示要推送开发环境; 如果不指定则为推送生产环境
推送到所有平台:
{ "platform" : "all" }
指定特定推送平台:
{ "platform" : ["android", "ios"] }
audience
推送设备对象,表示一条推送可以被推送到哪些设备列表。确认推送设备对象,JPush 提供了多种方式,比如:别名、标签、注册ID、分群、广播等。
如果要发广播(全部设备),则直接填写 “all”。
广播外的设备选择方式,有如下几种:
关键字含义类型说明备注
JSON Array
数组。多个标签之间是 OR 的关系,即取并集。
用标签来进行大规模的设备属性、用户属性分群。 一次推送最多 20 个。
有效的 tag 组成:字母(区分大小写)、数字、下划线、汉字。
限制:每一个 tag 的长度限制为 40 字节。(判断长度需采用UTF-8编码)
每种类型的值都是数组(Array),数组里多个值之间隐含的关系是是 OR,即取并集。但 tag_and 不同,其数组里多个值之间是 AND 关系,即取交集。
4 种类型至少需要有其一。如果值数组长度为 0,表示该类型不存在。
这几种类型可以并存。并存时多项的隐含关系是 AND,即取交集。
推送给全部(广播):
"platform":
"all",
"audience" :
"all",
"notification" : {
"alert" :
"Hi, JPush!",
"android" : {},
"ios" : {
"extras" : {
"newsid" :
321}
推送给多个标签(只要在任何一个标签范围内都满足):在深圳、广州、或者北京
"audience" : {
"tag" : [
"深圳",
"广州",
"北京" ]
推送给多个标签(需要同时在多个标签范围内):在深圳并且是“女”
"audience" : {
"tag_and" : [
"深圳",
"女" ]
推送给多个别名:
"audience" : {
"alias" : [
"4314",
"892",
"4531" ]
推送给多个注册ID:
"audience" : {
"registration_id" : [
"4312kjklfds2",
"8914afd2",
"45fdsa31" ]
可同时推送指定多类推送目标:在深圳或者广州,并且是 “女” “会员”
"audience" : {
"tag" : [
"深圳",
"广州" ]
"tag_and" : [
"女",
"会员"]
notification
“通知”对象,是一条推送的实体内容对象之一(另一个是“消息”),是会作为“通知”推送到客户端的。
其下属属性包含 4 种,3 个平台属性,以及一个 "alert" 属性。
alert
通知的内容在各个平台上,都可能只有这一个最基本的属性 "alert"。
这个位置的 "alert" 属性(直接在 notification 对象下),是一个快捷定义,各平台的 alert 信息如果都一样,则可不定义。如果各平台有定义,则覆盖这里的定义。
"notification" : {
"alert" :
"Hello, JPush!"
上面定义的 notification 对象,将被推送到 "platform" 指定的多个平台,并且其通知 alert 信息都一样。
android
Android 平台上的通知。
被 JPush SDK 按照一定的通知栏样式展示。
支持的字段有:
关键字类型选项含义说明
alert
string
这里指定了,则会覆盖上级统一指定的 alert 信息;内容可以为空字符串,则表示不展示到通知栏。
title
string
如果指定了,则通知里原来展示 App名称的地方,将展示成这个字段。
builder_id
通知栏样式ID
Android SDK 可设置通知栏样式,这里根据样式 ID 来指定该使用哪套样式。
extras
JSON Object
这里自定义 JSON 格式的 Key/Value 信息,以供业务使用。
iOS 平台上 APNs 通知。
该通知内容会由 JPush 代理发往 Apple APNs 服务器,并在 iOS 设备上在系统通知的方式呈现。
该通知内容满足 APNs 的规范,支持的字段如下:
关键字类型选项 说明
alert
string
这里指定了,将会覆盖上级统一指定的 alert 信息;内容为空则不展示到通知栏。支持 emoji 表情。
sound
string
通知提示声音
如果无此字段,则此消息无声音提示;有此字段,如果找到了指定的声音就播放该声音,否则播放默认声音,如果此字段为空字符串,iOS 7 为默认声音,iOS 8 为无声音。(消息) 说明:JPush 官方 API Library (SDK) 会默认填充声音字段。提供另外的方法关闭声音。
badge
如果不填,表示不改变角标数字;否则把角标数字改为指定的数字;为 0 表示清除。JPush 官方 API Library(SDK) 会默认填充badge值为"+1",详情参考:
badge +1
content-available
boolean
推送的时候携带"content-available":true 说明是 Background Remote Notification,如果不携带此字段则是普通的Remote Notification。详情参考:
Background Remote Notification
category
string
IOS8才支持。设置APNs payload中的"category"字段值
extras
JSON Object
这里自定义 Key/value 信息,以供业务使用。
iOS 通知 JPush 要转发给 APNs 服务器。APNs 协议定义通知长度为 2048 字节。
JPush 因为需要重新组包,并且考虑一点安全冗余,要求"iOS":{ } 及大括号内的总体长度不超过:2000 个字节。
另外,JPush 在推送时使用 utf-8 编码,所以一个汉字占用 3 个字节长度。
服务端发送消息串
"notification" : {
"ios" : {
"alert" :
"hello, JPush!",
"sound" :
"sound.caf",
"badge" :
1,
"extras" : {
"news_id" :
134,
"my_key" :
"a value"
客户端收到apns
"_j_msgid" =
813843507
winphone
Windows Phone 平台上的通知。
该通知由 JPush 服务器代理向微软的 MPNs 服务器发送,并在 Windows Phone 客户端的系统通知栏上展示。
该通知满足 MPNs 的相关规范。当前 JPush 仅支持 toast 类型:
关键字类型选项含义说明
alert
string
会填充到 toast 类型 text2 字段上。这里指定了,将会覆盖上级统一指定的 alert 信息;内容为空则不展示到通知栏。
title
string
会填充到 toast 类型 text1 字段上。
_open_page
string
点击打开的页面名称
点击打开的页面。会填充到推送信息的 param 字段上,表示由哪个 App 页面打开该通知。可不填,则由默认的首页打开。
extras
JSON Object
作为参数附加到上述打开页面的后边。
应用内消息。或者称作:自定义消息,透传消息。
此部分内容不会展示到通知栏上,JPush SDK 收到消息内容后透传给 App。App 需要自行处理。
iOS 平台上,有此部分内容,才会推送应用内消息通道。
Windows Phone 平台上,暂时不支持应用内消息。
消息包含如下字段:
关键字类型选项含义
msg_content
string
消息内容本身
title
string
content_type
string
消息内容类型
extras
JSON Object
JSON 格式的可选参数
Android 1.6.2及以下版本 接收notification 与message并存(即本次api调用同时推送通知和消息)的离线推送, 只能收到通知部分,message 部分没有透传给 App。
Android 1.6.3及以上SDK 版本已做相应调整,能正常接收同时推送通知和消息的离线记录。
iOS 1.7.3及以上的版本才能正确解析v3的message,但是无法解析v2推送通知同时下发的应用内消息。
options
推送可选项。
当前包含如下几个可选项:
关键字类型选项含义说明
sendno
纯粹用来作为 API 调用标识,API 返回时被原样返回,以方便 API 调用方匹配请求与返回。
time_to_live
离线消息保留时长(秒)
推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。默认 86400 (1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到。
override_msg_id
要覆盖的消息ID
如果当前的推送要覆盖之前的一条推送,这里填写前一条推送的 msg_id 就会产生覆盖效果,即:1)该 msg_id 离线收到的消息是覆盖后的内容;2)即使该 msg_id Android 端用户已经收到,如果通知栏还未清除,则新的消息内容会覆盖之前这条通知;覆盖功能起作用的时限是:1 天。如果在覆盖指定时限内该 msg_id 不存在,则返回 1003 错误,提示不是一次有效的消息覆盖操作,当前的消息不会被推送。
apns_production
boolean
APNs是否生产环境
True 表示推送生产环境,False 表示要推送开发环境;如果不指定则为推送生产环境。JPush 官方 API LIbrary (SDK) 默认设置为推送 “开发环境”。
big_push_duration
定速推送时长(分钟)
又名缓慢推送,把原本尽可能快的推送速度,降低下来,给定的n分钟内,均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送。
HTTP 状态码
参考文档:
HTTP-Status-Code
业务返回码
Code描述详细解释HTTP Status Code
系统内部错误
服务器端内部逻辑错误,请稍后重试。
只支持 HTTP Post 方法
不支持 Get 方法。
缺少了必须的参数
参数值不合法
必须改正。详情请看:
调用验证
消息体太大
必须改正。 Android平台Notification+Message长度限制为1000字节; iOS Notification 中 “iOS”:{ } 及大括号内的总体长度不超过:2000个字节(包括自定义参数和符号),iOS 的 Message部分长度不超过 1000 字节; WinPhone平台Notification长度限制为1000字节
app_key参数非法
没有满足条件的推送目标
请检查audience
只支持 HTTPS 请求
内部服务超时