全部产品
云市场
云游戏

API 说明 - 服务端

更新时间:2020-07-02 11:11:45

消息推送包含以下服务端 API 接口,具体描述见下表:

API 描述
极简推送 对一个目标 ID 推送一条消息。
模板推送 对一个目标 ID 推送一条消息,消息通过模板创建。
批量推送 对多个目标 ID 推送不同消息。基于模板,为各推送 ID 配置不同的模板占位符内容,从而实现消息的个性化推送。
群发推送

对全网设备推送相同消息,消息通过模板进行创建。

推送准备

在调用以下四种推送方式前,需引入 maven 配置,在主控 pom 中引入如下依赖:

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-mpaas</artifactId>
  4. <version>1.0.0.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.aliyun</groupId>
  8. <artifactId>aliyun-java-sdk-core</artifactId>
  9. <optional>true</optional>
  10. <version>[4.3.2,5.0.0)</version>
  11. </dependency>
注意: 在下文分别提供了 简单推送模板推送批量推送群发推送 四种方式的 API 示例代码供您参考,使用前请确保您使用的 httpclient 的版本大于 4.5.X,否则可能会出现使用故障。

极简推送

对一个推送 ID 推送一条消息。

说明:在调用本接口之前,您需要引入依赖,详见 推送准备

参数说明

参数名称 类型 是否必填 示例 描述
taskName String simpleTest 推送任务名称。
title String 测试 消息的标题。
content String 测试 消息的正文。
appId String ONEX570DA89211721 mpaas appid
workspaceId String test mpaas workspace
deliveryType Long 3 目标 ID 类型,数值选择如下:
  • 1 为 Android 设备维度
  • 2 为 iOS 设备维度
  • 3 为用户维度
targetMsgkey String {“user1024”:”1578807462788”} 推送目标,为 map 形式:
  • key: 为目标,配合 deliveryType
    如果 deliveryType 为 3 ,则 key 为 userid
  • value:消息业务 ID。
需注意,推送目标不可以超过 10 个。
expiredSeconds Long 300 消息有效期,单位为秒。
extendedParams String {“key1”:”value1”} 扩展参数,为 map 形式。
pushAction Long 0 点击消息后的跳转方式:
  • 0 为 web URL
  • 1 为 Intent activity
默认为 web URL。
uri String http://www 点击消息后的跳转地址。
silent Long 1 是否静默:
  • 1 为静默
  • 0 为非静默

代码示例

说明点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
  1. DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
  2. // 创建 DefaultAcsClient 实例并初始化
  3. DefaultProfile profile = DefaultProfile.getProfile(
  4. "cn-hangzhou", // 地域 ID
  5. "******", // RAM 账号的 AccessKey ID
  6. "*****"); // RAM 账号的 AccessKey Secret
  7. IAcsClient client = new DefaultAcsClient(profile);
  8. // Create an API request and set parameters
  9. PushSimpleRequest request = new PushSimpleRequest();
  10. request.setAppId("ONEX570DA89211721");
  11. request.setWorkspaceId("test");
  12. request.setTaskName("测试任务");
  13. request.setTitle("测试");
  14. request.setContent("测试");
  15. request.setDeliveryType(3L);
  16. Map<String,String> extendedParam = new HashMap<String, String>();
  17. extendedParam.put("key1","value1");
  18. request.setExtendedParams(JSON.toJSONString(extendedParam));
  19. request.setExpiredSeconds(300L);
  20. Map<String,String> target = new HashMap<String, String>();
  21. String msgKey = String.valueOf(System.currentTimeMillis());
  22. target.put("user1024",msgKey);
  23. request.setTargetMsgkey(JSON.toJSONString(target));
  24. // Initiate the request and handle the response or exceptions
  25. PushSimpleResponse response;
  26. try {
  27. response = client.getAcsResponse(request);
  28. System.out.println(response.getResultCode());
  29. System.out.println(response.getResultMessage());
  30. } catch (ClientException e) {
  31. e.printStackTrace();
  32. }

模板推送

模板推送指针对单个目标 ID 的消息推送,消息通过模板创建。多个 ID 可以使用同一个模板。

说明
  • 在调用本接口之前,您需要先在消息推送控制台上创建好目标模板,详细操作参见 创建模板
  • 在调用本接口之前,您需要引入依赖,详见 推送准备

参数说明

参数名称 类型 是否必填 示例 描述
taskName String 模板测试 推送任务名称。
appId String ONEX570DA89211721 mpaas appid
workspaceId String test mpaas workspace
deliveryType Long 3 目标 ID 类型,数值选择如下:
  • 1 为 Android 设备维度
  • 2 为 iOS 设备维度
  • 3 为用户维度
targetMsgkey String {“user1024”:”1578807462788”} 推送目标,为 map 形式:
  • key: 为目标,配合 deliveryType
    如果 deliveryType 为 3 ,则 key 为 userid
  • value:消息业务 ID。
需注意,推送目标不可以超过 10 个。
expiredSeconds Long 300 消息有效期,单位为秒。
templateName String 测试模板 模板名称,在控制台创建模板。
templateKeyValue String {“money”:”200”,”name”:”张三”} 模板参数,为 map 格式,和 templateName 指定的模板对应,key 为占位符名称,value 为要替换的值,例如模板内容为(两个 # 之间为占位符名称) 恭喜#name#中了#money#元
extendedParams String {“key1”:”value1”} 扩展参数,为 map 形式。

代码示例

说明点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
  1. DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
  2. // 创建 DefaultAcsClient 实例并初始化
  3. DefaultProfile profile = DefaultProfile.getProfile(
  4. "cn-hangzhou", // 地域 ID
  5. "******", // RAM 账号的 AccessKey ID
  6. "******"); // RAM 账号的 AccessKey Secret
  7. IAcsClient client = new DefaultAcsClient(profile);
  8. // Create an API request and set parameters
  9. PushTemplateRequest request = new PushTemplateRequest();
  10. request.setAppId("ONEX570DA89211721");
  11. request.setWorkspaceId("test");
  12. request.setTemplateName("测试模板");
  13. //你好#name#,恭喜中奖#money#元
  14. Map<String,String> templatekv = new HashMap<String, String>();
  15. templatekv.put("name","张三");
  16. templatekv.put("money","200");
  17. request.setTemplateKeyValue(JSON.toJSONString(templatekv));
  18. request.setExpiredSeconds(600L);
  19. request.setTaskName("模板测试");
  20. request.setDeliveryType(3L);
  21. Map<String,String> target = new HashMap<String, String>();
  22. String msgKey = String.valueOf(System.currentTimeMillis());
  23. target.put("userid1024",msgKey);
  24. request.setTargetMsgkey(JSON.toJSONString(target));
  25. PushTemplateResponse response;
  26. try {
  27. response = client.getAcsResponse(request);
  28. System.out.println(response.getResultCode());
  29. System.out.println(response.getResultMessage());
  30. } catch (ClientException e) {
  31. e.printStackTrace();
  32. }

批量推送

对各个推送 ID 推送不同消息。通过替换模板占位符的方式,创建针对某一推送 ID 的个性化消息。与模板推送的区别在于,每一个推送ID 可以收到内容不相同的消息。

说明
  • 在调用本接口之前,您需要先在消息推送控制台上创建好目标模板,并确保模板中存在占位符,否则将无法实现消息的个性化推送(即对不同推送 ID 推送不同消息)。详细操作参见 创建模板
  • 在调用本接口之前,您需要引入依赖,详见 推送准备

参数说明

参数名称 类型 是否必填 示例 描述
taskName String 批量测试 推送任务名称。
appId String ONEX570DA89211721 mpaas appid
workspaceId String test mpaas workspace
deliveryType Long 3 目标 ID 类型,数值选择:
  • 1 为 Android 设备维度
  • 2 为 iOS 设备维度
  • 3 为用户维度
templateName String 测试模板 模板名称,在控制台创建模板。
targetMsgs List TargetMsg 对象的list 目标对象列表,参数详见下方的 TargetMsg 对象
expiredSeconds Long 300 消息有效期,单位为秒。
extendedParams String {“key1”:”value1”} 统一扩展参数,为 map 形式。
TargetMsg 对象
参数名称 类型 是否必填 示例 描述
target String userid1024 目标 ID,根据 deliveryType 类型填写。
msgKey String 1578807462788 业务消息 ID,用于消息的排查。由用户定义,不可重复。
templateKeyValue String {“money”:”200”,”name”:”张三”} 模板参数,为 map 形式,和 templateName 指定的模板对应,key 为占位符名称,value 为要替换的值,例如模板内容为(两个 # 之间为占位符名称) 恭喜#name#中了#money#元
extendedParams String {“key1”:”value1”} 扩展参数,为 map 形式,针对每条消息的不同扩展参数。

代码示例

说明点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
  1. DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
  2. // 创建 DefaultAcsClient 实例并初始化
  3. DefaultProfile profile = DefaultProfile.getProfile(
  4. "cn-hangzhou", // 地域 ID
  5. "******", // RAM 账号的 AccessKey ID
  6. "******"); // RAM 账号的 AccessKey Secret
  7. IAcsClient client = new DefaultAcsClient(profile);
  8. // Create an API request and set parameters
  9. PushMultipleRequest request = new PushMultipleRequest();
  10. request.setAppId("ONEX570DA89211721");
  11. request.setWorkspaceId("test");
  12. request.setDeliveryType(3L);
  13. request.setTaskName("批量测试");
  14. request.setTemplateName("测试模板");
  15. //你好#name#,恭喜中奖#money#元
  16. List<PushMultipleRequest.TargetMsg> targetMsgs = new ArrayList<PushMultipleRequest.TargetMsg>();
  17. PushMultipleRequest.TargetMsg targetMsg = new PushMultipleRequest.TargetMsg();
  18. targetMsg.setTarget("userid1024");
  19. targetMsg.setMsgKey(String.valueOf(System.currentTimeMillis()));
  20. Map<String, String> templatekv = new HashMap<String, String>();
  21. templatekv.put("name", "张三");
  22. templatekv.put("money", "200");
  23. targetMsg.setTemplateKeyValue(JSON.toJSONString(templatekv));
  24. //目标数量不要超过400个
  25. targetMsgs.add(targetMsg);
  26. request.setTargetMsgs(targetMsgs);
  27. request.setExpiredSeconds(600L);
  28. PushMultipleResponse response;
  29. try {
  30. response = client.getAcsResponse(request);
  31. System.out.println(response.getResultCode());
  32. System.out.println(response.getResultMessage());
  33. } catch (ClientException e) {
  34. e.printStackTrace();
  35. }

群发推送

对全网设备推送相同消息,消息通过模板创建。

说明
  • 在调用本接口之前,您需要先在消息推送控制台上创建好目标模板,详细操作参见 创建模板
  • 在调用本接口之前,您需要引入依赖,详见 推送准备

参数说明

参数名称 类型 是否必填 示例 描述
taskName String 群发测试任务 推送任务名称。
appId String ONEX570DA89211721 mpaas appid
workspaceId String test mpaas workspace
deliveryType Long 1 目标 ID 类型,数值选择:
  • 1 为 Android 群发
  • 2 为 iOS 群发
msgkey String 1578807462788 业务方消息 ID,用户自定义,不可重复。
expiredSeconds Long 300 消息有效期,单位为秒。
templateName String 群发模板 模板名称,在控制台创建模板。
templateKeyValue String {“content”:”公告内容”} 模板参数,为 map 格式,和 templateName 指定的模板对应,key 为占位符名称,value 为要替换的值。
pushStatus Long 0 针对 iOS 群发,群发时,推送登录状态:
  • 0 所有当前绑定的用户(默认)
  • 1 所有用户(包括解绑的用户)
unBindPeriod Long 1 退出登录时长,当 pushStatus 为 1 时为必填:
  • 1 表示 7 天内解绑的用户
  • 2 表示 15 天内解绑的用户
  • 3 表示 60 天内解绑的用户
  • 4 表示永久

代码示例

说明点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
  1. DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
  2. // 创建 DefaultAcsClient 实例并初始化
  3. DefaultProfile profile = DefaultProfile.getProfile(
  4. "cn-hangzhou", // 地域 ID
  5. "******", // RAM 账号的 AccessKey ID
  6. "******"); // RAM 账号的 AccessKey Secret
  7. IAcsClient client = new DefaultAcsClient(profile);
  8. PushBroadcastRequest request = new PushBroadcastRequest();
  9. request.setAppId("ONEX570DA89211720");
  10. request.setWorkspaceId("test");
  11. request.setDeliveryType(2L);
  12. request.setMsgkey(String.valueOf(System.currentTimeMillis()));
  13. request.setExpiredSeconds(600L);
  14. request.setTaskName("群发任务");
  15. request.setTemplateName("群发测试");
  16. //这是一个公告:#content#
  17. Map<String, String> templatekv = new HashMap<String, String>();
  18. templatekv.put("content", "公告内容");
  19. request.setTemplateKeyValue(JSON.toJSONString(templatekv));
  20. PushBroadcastResponse response;
  21. try {
  22. response = client.getAcsResponse(request);
  23. System.out.println(response.getResultCode());
  24. System.out.println(response.getResultMessage());
  25. } catch (ClientException e) {
  26. e.printStackTrace();
  27. }