调用ContinuouslyPush持续推送。
接口说明
本接口是用于解决Push接口中,无论是按设备推、按账号推、按别名推,在单次调用中都存在目标个数上限的问题。
- 使用持续推送意味着业务场景是要往大量设备上,发送同一条消息。这时候,应当合理调用持续推送接口,每次调用,聚合一组设备进行推送(目前按设备推、按账号推、按别名推,单次推送目标个数上限是1000)。我们会限制在同一个 MessageId 上推送的总次数为 10000 。如确实需要更高限额,请联系技术支持评估具体场景。
- 使用这个接口前,需要调用Push接口,将Target设置为TBD(ToBeDetermined),填入消息内容,调用获得该消息在推送系统中的MessageId。然后,可以基于这个MessageId,重复调用此接口,指定不同的目标组,将此消息推送到这些目标上。
- 调用Push接口设置目标为TBD获得MessageId后,这个消息默认会在推送系统保存24个小时,过期之前,可以随时使用本接口进行指定目标推送。过期后不再允许推送。超出总次数上限后不再允许推送。
- 每次调用本接口指定设备时,消息都是立即推出,不支持设置定时推送。
说明 SDK需升级到3.12.0及以上版本。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | ContinuouslyPush | 系统规定参数。取值:ContinuouslyPush。 |
AppKey | Long | 是 | 23267207 | AppKey信息。 |
MessageId | String | 是 | 500131 | 消息ID。 调用Push接口,设置Target为TBD,调用后获得的MessageId。它代表了一个已经保存到推送系统的消息。 |
Target | String | 是 | DEVICE | 推送目标:
持续推送只支持这3种目标类型。 |
TargetValue | String | 是 | a692961a92534047ad3625**** | 根据Target来设定,多个值使用逗号分隔,超过限制需要分多次推送。
|
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
MessageId | String | 9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC | 标志一次推送的消息ID。 |
RequestId | String | 500131 | 请求ID。 |
示例
请求示例
http(s)://cloudpush.aliyuncs.com/?Action=ContinuouslyPush
&AppKey=23267207
&MessageId=500131
&Target=DEVICE
&TargetValue=a692961a92534047ad3625****
&<公共请求参数>
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<ContinuouslyPushResponse>
<RequestId>9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC</RequestId>
<MessageId>500131</MessageId>
</ContinuouslyPushResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC",
"MessageId" : "500131"
}
错误码
访问错误中心查看更多错误码。
Java示例代码
ContinuouslyPushRequest continuouslyPushRequest = new ContinuouslyPushRequest();
continuouslyPushRequest.setAppKey(appKey);
// 设置持续推送的消息Id
continuouslyPushRequest.setMessageId("500131");
// 指定推送目标
// 可以继续用同一个`MessageId`,调用此接口指定其它设备,继续推送
continuouslyPushRequest.setTarget("DEVICE");
continuouslyPushRequest.setTargetValue("a692961a92534047ad362575f31f57b7");
ContinuouslyPushResponse continuouslyPushResponse = client.getAcsResponse(continuouslyPushRequest);
System.out.printf("RequestId: %s, MessageId: %s\n",
continuouslyPushResponse.getRequestId(), continuouslyPushResponse.getMessageId());