开发者社区> 问答> 正文

怎么推送高级接口?



Push



描述


推送高级接口。

请求参数



基础参数

名称类型是否必须描述
ActionString操作接口名称,取值:Push
AppKeyLongAppKey信息


推送目标(destination)

名称类型是否必须描述
TargetString推送目标
  • device:推送给设备
  • account:推送给指定帐号
  • alias:推送给指定别名
  • tag:推送给指定Tag
  • all:推送给全部设备
TargetValueString根据Target来设定,多个值使用逗号分隔,最多支持100个。
  • Target=device,值如deviceid111,deviceid1111
  • Target=account,值如account111,account222
  • Target=alias,值如alias111,alias222
  • Target=tag,支持单Tag和多Tag,格式请参考标签格式
  • Target=all,值为all
DeviceTypeInteger设备类型,取值范围为:
  • 0:iOS设备
  • 1:Andriod设备
  • 3:全部类型设备


推送配置(config)

名称类型是否必须描述
TypeInteger
  • 0:表示消息,[backcolor=transparent]默认值
  • 1:表示通知
TitleStringAndroid消息标题,Android通知标题,iOS消息标题,最长20个字符(中文算1个字符)
BodyStringAndroid消息内容,Android通知内容,iOS消息内容
SummaryStringiOS通知内容

Title/Body/Summary 展开说明如下:
属性\推送类型消息 - iOS消息 - Android通知 - iOS通知 - Android
Title消息标题,对应消息回调中CCPSysMessage的title字段消息标题,对应消息回调中CPushMessage的title字段N/A通知标题,对应通知收到和打开回调的title字段
Body消息内容,对应消息回调中CCPSysMessage的body字段消息内容,对应消息回调中CPushMessage的content字段N/A通知内容,对应通知收到和通知打开回调的summary字段
SummaryN/AN/A通知内容N/A


下述配置仅作用于iOS通知任务

  • [backcolor=transparent]【注意】若没有进行iOS 10通知相关配置(iOSTitle / iOSSubTitle / iOSMutableContent / iOSNotificationCategory),通知payload保持老版本不变,已经保证对老版本payload兼容性;若进行iOS 10通知相关配置,请确保客户端业务逻辑对payload相关字段处理的兼容性;iOS通知payload字段参考iOS 10通知适配-第3节。
名称类型是否必须描述
iOSMusicStringiOS通知声音,指定存放在app bundle或沙盒Library/Sounds目录下的音频文件名,参考:iOS推送如何设定通知声音,(若指定为空串(””),通知为静音;若不设置,默认填充default为系统提示音)
iOSBadgeStringiOS应用图标右上角角标
iOSTitleStringiOS通知标题(iOS 10+通知显示标题,[ iOS 8.2 <= iOS系统 < iOS 10 ]替换通知应用名称)
iOSSubtitleStringiOS通知副标题(iOS 10+)
iOSMutableContentBoolean是否使能iOS通知扩展处理(iOS 10+)
iOSNotificationCategoryString设定iOS通知Category(iOS 10+)
iOSExtParametersStringiOS通知的扩展属性,iOS 10+ 可以在此指定富媒体推送通知的资源Url: {“attachment”: “https://xxxx.xxx/notification_pic.png"} (注意 : 该参数要以json map的格式传入,否则会解析出错)
ApnsEnvStringiOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。
  • DEV:表示开发环境
  • PRODUCT:表示生产环境(默认值)


下述配置仅作用于iOS消息

名称类型是否必须描述
RemindBoolean推送时设备不在线(即与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次(发送通知时,Summary为通知的内容,Message不起作用)。注意:[backcolor=transparent]离线消息转通知仅适用于生产环境


下述配置仅作用于Android通知任务

名称类型是否必须描述
AndroidMusicStringAndroid通知声音(保留参数,当前暂不起作用)
AndroidOpenTypeString点击通知后动作
  • 1:打开应用
  • 2:打开应用Activity
  • 3:打开URL
  • 4:无跳转逻辑
AndroidActivityString设定通知打开的activity,仅当AndroidOpenType=2有效,如:com.alibaba.cloudpushdemo.bizactivity
XiaomiActivityString设置该参数后启动小米托管弹窗功能, 此处指定通知点击后跳转的Activity(托管弹窗的前提条件:1. 集成小米辅助通道;2. StoreOffline参数设为true)注意: 小米辅助通道对托管弹窗传输有长度限制,title < 16字符(中英文都以一个字符计算),Body < 128字符(中英文都以一个字符计算)。
AndroidOpenUrlStringAndroid收到推送后打开对应的url,仅当AndroidOpenType=3有效
AndroidExtParametersString设定通知的扩展属性。(目前android通知的提醒方式的设置在该参数里面:”_NOTIFY_TYPE_=0\1\2\3”,0:静音,1:振动,2:声音,3:声音和振动。android自定义通知样式的设置也在该参数里面:”_NOTIFICATION_BAR_STYLE_“=1\2\3..100)(注意 : 该参数要以json map的格式传入,否则会解析出错)


推送控制(push control)

名称类型是否必须描述
PushTimeString用于定时发送。不设置缺省是立即发送。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ。
StoreOfflineBoolean离线消息/通知是否保存。若保存,在推送时候用户不在线,在过期时间(ExpireTime)内用户上线时会被再次发送。StoreOffline默认设置为false,ExpireTime默认为72小时。(iOS通知走Apns链路,不受StoreOffline影响)
ExpireTimeString离线消息/通知的过期时间,和StoreOffline配合使用,过期则不会再被发送,最长保存72小时。默认为72小时。时间格式按照ISO8601标准表示,并需要使用UTC时间,格式为YYYY-MM-DDThh:mm:ssZ,过期时间不能小于当前时间或者定时发送时间加上3秒(ExpireTime > PushTime + 3秒),3秒是为了冗余网络和系统延迟造成的误差。


响应参数

名称类型描述
ResponseIdString请求返回ID(如需排查问题可告诉工作人员该ID)


错误码


对于所有接口的通用性错误,请参考 错误代码表

示例



请求示例

  1. [backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//cloudpush.aliyuncs.com/?Action=Push
  2. [backcolor=transparent]&[backcolor=transparent]AppKey[backcolor=transparent]=[backcolor=transparent]23267207
  3. [backcolor=transparent]&[backcolor=transparent]Target[backcolor=transparent]=[backcolor=transparent]device[backcolor=transparent]&
  4. [backcolor=transparent]&[backcolor=transparent]TargetValue[backcolor=transparent]=[backcolor=transparent]e2ba19de97604f55b165576736477b74[backcolor=transparent]%[backcolor=transparent]2C92a1da34bdfd4c9692714917ce22d53d
  5. [backcolor=transparent]&[backcolor=transparent]Title[backcolor=transparent]=[backcolor=transparent]hello
  6. [backcolor=transparent]&[backcolor=transparent]Body[backcolor=transparent]=[backcolor=transparent]hello
  7. [backcolor=transparent]&[backcolor=transparent]Type[backcolor=transparent]=[backcolor=transparent]1
  8. [backcolor=transparent]&[backcolor=transparent]AndroidOpenType[backcolor=transparent]=[backcolor=transparent]1
  9. [backcolor=transparent]&[backcolor=transparent]DeviceType[backcolor=transparent]=[backcolor=transparent]3
  10. [backcolor=transparent]&[backcolor=transparent]Remind[backcolor=transparent]=[backcolor=transparent]false
  11. [backcolor=transparent]&[backcolor=transparent]StoreOffline[backcolor=transparent]=[backcolor=transparent]false
  12. [backcolor=transparent]&<公共请求参数>


返回示例



XML格式

  1. [backcolor=transparent]<?[backcolor=transparent]xml version[backcolor=transparent]=[backcolor=transparent]'1.0'[backcolor=transparent] encoding[backcolor=transparent]=[backcolor=transparent]'UTF-8'[backcolor=transparent]?>
  2. [backcolor=transparent]<PushResponse>
  3. [backcolor=transparent]    [backcolor=transparent]<ResponseId>[backcolor=transparent]129376928[backcolor=transparent]</ResponseId>
  4. [backcolor=transparent]</PushResponse>


JSON格式

  1. [backcolor=transparent]{
  2. [backcolor=transparent]  [backcolor=transparent]"ResponseId"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"129377184"
  3. [backcolor=transparent]}


Java示例代码

  1. [backcolor=transparent]PushRequest[backcolor=transparent] pushRequest [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]PushRequest[backcolor=transparent]();
  2. [backcolor=transparent]// 推送目标
  3. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setAppKey[backcolor=transparent]([backcolor=transparent]appKey[backcolor=transparent]);
  4. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setTarget[backcolor=transparent]([backcolor=transparent]"all"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]//推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部
  5. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setTargetValue[backcolor=transparent]([backcolor=transparent]"all"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]//根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)
  6. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setDeviceType[backcolor=transparent]([backcolor=transparent]3[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 设备类型deviceType 取值范围为:0~3. iOS设备: 0; Android设备: 1; 全部: 3, 这是默认值.
  7. [backcolor=transparent]// 推送配置
  8. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setType[backcolor=transparent]([backcolor=transparent]1[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 0:表示消息(默认为0), 1:表示通知
  9. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setTitle[backcolor=transparent]([backcolor=transparent]"Hello"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 消息的标题
  10. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setBody[backcolor=transparent]([backcolor=transparent]"PushRequest body"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 消息的内容
  11. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setSummary[backcolor=transparent]([backcolor=transparent]"PushRequest summary"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 通知的摘要
  12. [backcolor=transparent]// 推送配置: iOS
  13. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setiOSBadge[backcolor=transparent]([backcolor=transparent]"5"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// iOS应用图标右上角角标
  14. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setiOSMusic[backcolor=transparent]([backcolor=transparent]"default"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// iOS通知声音
  15. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setiOSExtParameters[backcolor=transparent]([backcolor=transparent]"{\"k1\":\"ios\",\"k2\":\"v2\"}"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]//自定义的kv结构,开发者扩展用 针对iOS设备
  16. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setApnsEnv[backcolor=transparent]([backcolor=transparent]"DEV"[backcolor=transparent]);
  17. [backcolor=transparent]// pushRequest.setRemind(true); // 当APP不在线时候,是否通过通知提醒
  18. [backcolor=transparent]// 推送配置: Android
  19. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setAndroidOpenType[backcolor=transparent]([backcolor=transparent]"3"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 url
  20. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setAndroidOpenUrl[backcolor=transparent]([backcolor=transparent]"http://www.baidu.com"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// Android收到推送后打开对应的url,仅仅当androidOpenType=3有效
  21. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setAndroidExtParameters[backcolor=transparent]([backcolor=transparent]"{\"k1\":\"android\",\"k2\":\"v2\"}"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 设定android类型设备通知的扩展属性
  22. [backcolor=transparent]// 推送控制
  23. [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]Date[backcolor=transparent] pushDate [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]Date[backcolor=transparent]([backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]currentTimeMillis[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]3600[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent] [backcolor=transparent]1000[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 一小时后发送, 也可以设置成你指定固定时间
  24. [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]String[backcolor=transparent] pushTime [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]ParameterHelper[backcolor=transparent].[backcolor=transparent]getISO8601Time[backcolor=transparent]([backcolor=transparent]pushDate[backcolor=transparent]);
  25. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setPushTime[backcolor=transparent]([backcolor=transparent]pushTime[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 延后推送。可选,如果不设置表示立即推送
  26. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setStoreOffline[backcolor=transparent]([backcolor=transparent]true[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
  27. [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]String[backcolor=transparent] expireTime [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]ParameterHelper[backcolor=transparent].[backcolor=transparent]getISO8601Time[backcolor=transparent]([backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]Date[backcolor=transparent]([backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]currentTimeMillis[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]12[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent] [backcolor=transparent]3600[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent] [backcolor=transparent]1000[backcolor=transparent]));[backcolor=transparent] [backcolor=transparent]// 12小时后消息失效, 不会再发送
  28. [backcolor=transparent]pushRequest[backcolor=transparent].[backcolor=transparent]setExpireTime[backcolor=transparent]([backcolor=transparent]expireTime[backcolor=transparent]);
  29. [backcolor=transparent]PushResponse[backcolor=transparent] pushResponse [backcolor=transparent]=[backcolor=transparent] client[backcolor=transparent].[backcolor=transparent]getAcsResponse[backcolor=transparent]([backcolor=transparent]pushRequest[backcolor=transparent]);
  30. [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]out[backcolor=transparent].[backcolor=transparent]printf[backcolor=transparent]([backcolor=transparent]"RequestId: %s, ResponseId: %s, message: %s\n"[backcolor=transparent],
  31. [backcolor=transparent]        pushResponse[backcolor=transparent].[backcolor=transparent]getRequestId[backcolor=transparent](),[backcolor=transparent] pushResponse[backcolor=transparent].[backcolor=transparent]getResponseId[backcolor=transparent](),[backcolor=transparent] pushResponse[backcolor=transparent].[backcolor=transparent]getMessage[backcolor=transparent]());
  1. [backcolor=transparent]com[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]exceptions[backcolor=transparent].[backcolor=transparent]ClientException[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]Push[backcolor=transparent] [backcolor=transparent]Failed[backcolor=transparent] [backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]Push[backcolor=transparent] [backcolor=transparent]Fail[backcolor=transparent]![backcolor=transparent]  [backcolor=transparent]排查步骤
  2. [backcolor=transparent]1[backcolor=transparent]、检查[backcolor=transparent]SDK[backcolor=transparent]的版本号,是否是最新版本?
  3. [backcolor=transparent]2[backcolor=transparent][backcolor=transparent]title[backcolor=transparent]是不是大于[backcolor=transparent]20[backcolor=transparent]个字符了?
  4. [backcolor=transparent]3[backcolor=transparent]、是不是有必填参数没有填写?[backcolor=transparent] [backcolor=transparent]高级接口因为既可以发送[backcolor=transparent]iOS[backcolor=transparent]也可以发送[backcolor=transparent]Android[backcolor=transparent],所以[backcolor=transparent]iOS[backcolor=transparent][backcolor=transparent]Android[backcolor=transparent]必填参数都需要填写,参数的完整性校验之后才会按照参数设置走[backcolor=transparent]iOS[backcolor=transparent]或者[backcolor=transparent]Android[backcolor=transparent]的发送流程。

展开
收起
猫饭先生 2017-10-23 10:09:57 1699 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
网易 NEI 接口管理解决 方案 立即下载
钉钉客户端自动化的应用 立即下载
无需从0开发 1天上手只能语音离在线方案 立即下载