执行预定义的持续推送任务。
接口说明
本接口是用于解决 Push 高级推送接口中,无论是按设备推、按账号推、按别名推,在单次调用中都存在目标个数上限的问题。
-
使用持续推送意味着业务场景是要往大量设备上,发送同一条消息。这时候,应当合理调用持续推送接口,每次调用,聚合一组设备进行推送(目前按设备推、按账号推、按别名推,单次推送目标个数上限是 1000)。我们会限制在同一个 MessageId 上推送的总次数为 10000 。如确实需要更高限额,请联系技术支持评估具体场景。
-
使用这个接口前,需要调用 Push 接口,将 Target 设置为 TBD(To Be Determined),填入消息内容,调用获得该消息在推送系统中的 MessageId。然后,可以基于这个 MessageId,重复调用此接口,指定不同的目标组,将此消息推送到这些目标上。
-
调用 Push 接口设置目标为 TBD 获得 MessageId 后,这个消息默认会在推送系统保存 24 个小时,过期之前,可以随时使用本接口进行指定目标推送。过期后不再允许推送。超出总次数上限后不再允许推送。
-
每次调用本接口指定设备时,消息都是立即推出,不支持设置定时推送。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
下表是API对应的授权信息,可以在RAM权限策略语句的Action
元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:
- 操作:是指具体的权限点。
- 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
- 资源类型:是指操作中支持授权的资源类型。具体说明如下:
- 对于必选的资源类型,用背景高亮的方式表示。
- 对于不支持资源级授权的操作,用
全部资源
表示。
- 条件关键字:是指云产品自身定义的条件关键字。
- 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作 | 访问级别 | 资源类型 | 条件关键字 | 关联操作 |
---|---|---|---|---|
mpush:ContinuouslyPush | none |
|
| 无 |
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
AppKey | long | 是 | AppKey 信息。 | 23267207 |
MessageId | string | 是 | 消息 ID。 调用 Push 接口,设置 Target 为 TBD,调用后获得的 MessageId。它代表了一个已经保存到推送系统的消息。 | 500131 |
Target | string | 是 | 推送目标:
持续推送只支持这 3 种目标类型。 | DEVICE |
TargetValue | string | 是 | 根据 Target 来设定,多个值使用逗号分隔,超过限制需要分多次推送。
| a692961a92534047ad3625**** |
返回参数
示例
正常返回示例
JSON
格式
{
"MessageId": "9998B3CC-ED9E-4CB3-A8FB-DCC61296BFBC",
"RequestId": "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());