全部产品
移动推送

推送高级接口

更新时间:2017-06-07 13:26:11   分享:   

Push

描述

推送高级接口。

请求参数

基础参数

名称 类型 是否必须 描述
Action String 操作接口名称,取值:Push
AppKey Long AppKey信息

推送目标(destination)

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

推送配置(config)

名称 类型 是否必须 描述
Type Integer
  • 0:表示消息,默认值
  • 1:表示通知
Title String Android消息标题,Android通知标题,iOS消息标题,最长20个字符(中文算1个字符)
Body String Android消息内容,Android通知内容,iOS消息内容
Summary String iOS通知内容

Title/Body/Summary 展开说明如下:

属性\推送类型 消息 - iOS 消息 - Android 通知 - iOS 通知 - Android
Title 消息标题,对应消息回调中CCPSysMessagetitle字段 消息标题,对应消息回调中CPushMessagetitle字段 N/A 通知标题,对应通知收到和打开回调的title字段
Body 消息内容,对应消息回调中CCPSysMessagebody字段 消息内容,对应消息回调中CPushMessagecontent字段 N/A 通知内容,对应通知收到和通知打开回调的summary字段
Summary N/A N/A 通知内容 N/A

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

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

下述配置仅作用于iOS消息

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

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

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

推送控制(push control)

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

响应参数

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

错误码

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

示例

请求示例

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

返回示例

XML格式

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

JSON格式

  1. {
  2. "ResponseId": "129377184"
  3. }

Java示例代码

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