651
iPhone_iPad_Mac_手机_平板_苹果apple
推送高级接口__API列表_OpenAPI 1.0_移动推送-阿里云
Push
描述
推送高级接口。
请求参数
基础参数
名称 |
类型 |
是否必须 |
描述 |
---|
Action |
String |
是 |
操作接口名称,取值:Push |
AppKey |
Long |
是 |
AppKey信息 |
推送目标(destination)
名称 |
类型 |
是否必须 |
描述 |
---|
Target |
String |
是 |
推送目标device :推送给设备account :推送给指定帐号alias :推送给指定别名tag :推送给指定Tagall :推送给全部设备
|
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 |
是 |
|
Title |
String |
是 |
Android消息标题,Android通知标题,iOS消息标题,最长20个字符,中文为1个字符 |
Body |
String |
是 |
Android消息内容,Android通知内容,iOS消息内容 |
Summary |
String |
否 |
iOS通知内容 |
Title
/Body
/Summary
展开说明如下:
属性推送类型 |
消息 - iOS |
消息 - Android |
通知 - iOS |
通知 - Android |
---|
Title |
消息标题,对应消息回调中CCPSysMessage 的title 字段 |
消息标题,对应消息回调中CPushMessage 的title 字段 |
N/A |
通知标题,对应通知收到和打开回调的title 字段 |
Body |
消息内容,对应消息回调中CCPSysMessage 的body 字段 |
消息内容,对应消息回调中CPushMessage 的content 字段 |
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通知声音,不设置该参数播放系统默认声音,设置空字符(“”)不播放声音 |
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 :打开URL4 :无跳转逻辑
|
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_=0123”,0:静音,1:振动,2:声音,3:声音和振动。android自定义通知样式的设置也在该参数里面:”_NOTIFICATION_BAR_STYLE_“=123..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) |
错误码
对于所有接口的通用性错误,请参考错误代码表。
示例
请求示例
https://cloudpush.aliyuncs.com/?Action=Push
&AppKey=23267207
&Target=device&
&TargetValue=e2ba19de97604f55b165576736477b74%2C92a1da34bdfd4c9692714917ce22d53d
&Title=hello
&Body=hello
&Type=1
&AndroidOpenType=1
&DeviceType=3
&Remind=false
&StoreOffline=false
&<公共请求参数>
返回示例
XML格式
<?xml version='1.0' encoding='UTF-8'?>
<PushResponse>
<ResponseId>129376928</ResponseId>
</PushResponse>
JSON格式
{
"ResponseId": "129377184"
}
Java示例代码
PushRequest pushRequest = new PushRequest();
// 推送目标
pushRequest.setAppKey(appKey);
pushRequest.setTarget("all"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部
pushRequest.setTargetValue("all"); //根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)
pushRequest.setDeviceType(3); // 设备类型deviceType 取值范围为:0~3. iOS设备: 0; Android设备: 1; 全部: 3, 这是默认值.
// 推送配置
pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知
pushRequest.setTitle("Hello"); // 消息的标题
pushRequest.setBody("PushRequest body"); // 消息的内容
pushRequest.setSummary("PushRequest summary"); // 通知的摘要
// 推送配置: iOS
pushRequest.setiOSBadge("5"); // iOS应用图标右上角角标
pushRequest.setiOSMusic("default"); // iOS通知声音
pushRequest.setiOSExtParameters("{"k1":"ios","k2":"v2"}"); //自定义的kv结构,开发者扩展用 针对iOS设备
pushRequest.setApnsEnv("DEV");
// pushRequest.setRemind(true); // 当APP不在线时候,是否通过通知提醒
// 推送配置: Android
pushRequest.setAndroidOpenType("3"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 url
pushRequest.setAndroidOpenUrl("https://www.baidu.com"); // Android收到推送后打开对应的url,仅仅当androidOpenType=3有效
pushRequest.setAndroidExtParameters("{"k1":"android","k2":"v2"}"); // 设定android类型设备通知的扩展属性
// 推送控制
final Date pushDate = new Date(System.currentTimeMillis() + 3600 * 1000); // 一小时后发送, 也可以设置成你指定固定时间
final String pushTime = ParameterHelper.getISO8601Time(pushDate);
pushRequest.setPushTime(pushTime); // 延后推送。可选,如果不设置表示立即推送
pushRequest.setStoreOffline(true); // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
final String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // 12小时后消息失效, 不会再发送
pushRequest.setExpireTime(expireTime);
PushResponse pushResponse = client.getAcsResponse(pushRequest);
System.out.printf("RequestId: %s, ResponseId: %s, message: %sn",
pushResponse.getRequestId(), pushResponse.getResponseId(), pushResponse.getMessage());
com.aliyuncs.exceptions.ClientException: Push Failed : Push Fail! 排查步骤
1、检查SDK的版本号,是否是最新版本?
2、title是不是大于20个字符了?
3、是不是有必填参数没有填写? 高级接口因为既可以发送iOS也可以发送Android,所以iOS和Android必填参数都需要填写,参数的完整性校验之后才会按照参数设置走iOS或者Android的发送流程。
最后更新:2016-12-14 14:30:02