全部产品
云市场

Java SDK 接入

更新时间:2020-03-20 18:25:22

引入 jar 包

完成 Maven 配置后,在主控 pom.xml 文件中引入如下依赖:

  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>

接口说明

单条数据同步接口

单数据同步接口是指同步数据到指定的用户或者设备。

代码示例

  1. public static void main(String[] args) {
  2. //请求信息,除 AccessKey ID AccessKey Secret 外固定即可
  3. DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
  4. // 创建 DefaultAcsClient 实例并初始化
  5. DefaultProfile profile = DefaultProfile.getProfile(
  6. "cn-hangzhou", // 地域 ID
  7. "xxxxxx", // RAM 账号的 AccessKey ID
  8. "xxxxxx"); // RAM 账号的 AccessKey Secret
  9. IAcsClient client = new DefaultAcsClient(profile);
  10. CreateOpenSingleDataRequest singleRequest = constuctSingleRequest();
  11. CreateOpenSingleDataResponse singleDataResponse;
  12. try {
  13. singleDataResponse = client.getAcsResponse(singleRequest);
  14. System.out.println("singleDataResponse:" +
  15. ToStringBuilder
  16. .reflectionToString(singleDataResponse, ToStringStyle.SHORT_PREFIX_STYLE));
  17. } catch (ServerException e) {
  18. e.printStackTrace();
  19. } catch (ClientException e) {
  20. e.printStackTrace();
  21. } catch (com.aliyuncs.exceptions.ClientException e) {
  22. e.printStackTrace();
  23. } catch (Throwable throwable) {
  24. throwable.printStackTrace();
  25. }
  26. }
  27. private static CreateOpenSingleDataRequest constuctSingleRequest() {
  28. CreateOpenSingleDataRequest singleRequest
  29. = new CreateOpenSingleDataRequest();
  30. //*************必要属性*************/
  31. //mPaaS 控制台获取的 APPID
  32. singleRequest.setAppId("xxxxxxx");
  33. //mPaaS 控制台获取的 WorkspaceId
  34. singleRequest.setWorkspaceId("xxxxxxxx");
  35. //mPaaS 控制台移动同步中配置的同步标识
  36. singleRequest.setBizType("TEST-SYNC");
  37. //需要推送的用户 ID 或者设备 ID(UTDID)
  38. singleRequest.setLinkToken("testUserId");
  39. //实际业务消息体,自定义长度不超过 4096
  40. singleRequest.setPayload("testPayload");
  41. //业务 ID,保证唯一,长度不超过 100
  42. singleRequest.setThirdMsgId("test_third_msg_id_" + System.currentTimeMillis());
  43. //************非必要属性*************/
  44. //推送目标设备的操作系统 iOS 或 Android 为空时不限制操作系统
  45. singleRequest.setOsType("IOS");
  46. //持的最小客户端版本号,如:8.6.0.0.9999 ,可为空,为空将不限制最小版本号
  47. singleRequest.setAppMinVersion("0.0.0.0");
  48. //支持的最大客户端版本号,如:9.0.0.0.9999,可为空,为空将不限制最大版本号
  49. singleRequest.setAppMaxVersion("100.100.100.100");
  50. //有效期开始,可为空,为空时不限制有效起始时间
  51. singleRequest.setValidTimeStart(System.currentTimeMillis());
  52. //有效期结束,可为空,为空时不限制有效结束时间 最长有效期为 30 天
  53. singleRequest.setValidTimeEnd(System.currentTimeMillis() + (1000 * 3600));
  54. return singleRequest;
  55. }

参数说明

业务参数信息如下:

名称 类型 是否必须 示例 描述
appId String ONEX570DA892117 从 mPaaS 控制台获取的 App ID。
workspaceId String PROD 从 mPaaS 控制台获取的 Workspace ID。
bizType String UCHAT 在 mPaaS 控制台配置的同步标识,参见 控制台简介
linkToken String 推送目标 ID,如果是基于用户推送,填入用户 ID。如果同步配置是基于设备推送,填入设备 ID。
payload String testtestatapalayd 实际业务消息体,自定义格式,长度不超过 4096。
thirdMsgId String 1760339273 一次数据同步请求 ID。同一个同步标识内唯一,ID 重复的请求将会被忽略。须小于 100 Byte。
osType String iOS/Android 按手机平台过滤进行推送。默认情况下不传递参数,即不过滤,iOS 与 Android 平台均会推送。
appMinVersion String 0.0.0.0 推送数据过滤客户端版本,仅向大于等于该版本号的客户端发送推送。
appMaxVersion String 100.100.100.100 推送数据过滤客户端版本,仅向小于等于该版本号的客户端发送推送。
validTimeStart String 1584448493913 当前时间大于等于 validTimeStart 时才会推送。
validTimeEnd String 1584452093913 当前时间小于等于 validTimeEnd 时才会推送。

单条数据同步结果码

结果码 描述 解决方法
SUCCESS 成功 成功
ARGS_IS_NULL 必要参数为空 检查是否已完整按照非空逻辑传递参数。
PAYLOAD_LONG PAYLOAD 消息体过长 检查 playload 属性参数长度是否超过限制。
THIRD_MSG_ID_LONG 三方业务 ID 过长 检查三方业务 ID 长度是否超过限制。
BIZ_NOT_ONLINE 业务场景同步标识未提交上线 前往 mPaaS 控制台 > 移动同步 检查 bizType 对应同步标识已配置并提交上线。
THIRD_MSG_ID_IS_NULL 三方业务 ID 为空 检查三方业务 ID 是否为空。
SYSTEM_ERROR 系统异常 联系技术支持确认系统异常原因。
INVALID_TENANT_ID 无效租户 ID 检查 appId 是否正确,是否有权限使用。

全局(网)数据同步接口

全局数据同步是指同步数据到所有设备。

代码示例

  1. public static void main(String[] args) {
  2. //请求信息,除 AccessKey ID AccessKey Secret 外固定即可
  3. DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
  4. // 创建 DefaultAcsClient 实例并初始化
  5. DefaultProfile profile = DefaultProfile.getProfile(
  6. "cn-hangzhou", // 地域 ID
  7. "xxxxxx", // RAM 账号的 AccessKey ID
  8. "xxxxxx"); // RAM 账号的 AccessKey Secret
  9. IAcsClient client = new DefaultAcsClient(profile);
  10. CreateOpenGlobalDataRequest globalDataRequest = constuctGlobelRequest();
  11. CreateOpenGlobalDataResponse globalDataResponse;
  12. try {
  13. globalDataResponse = client.getAcsResponse(globalDataRequest);
  14. System.out.println("globalDataResponse:" +
  15. ToStringBuilder
  16. .reflectionToString(globalDataResponse, ToStringStyle.SHORT_PREFIX_STYLE));
  17. } catch (ServerException e) {
  18. e.printStackTrace();
  19. } catch (ClientException e) {
  20. e.printStackTrace();
  21. } catch (com.aliyuncs.exceptions.ClientException e) {
  22. e.printStackTrace();
  23. } catch (Throwable throwable) {
  24. throwable.printStackTrace();
  25. }
  26. }
  27. private static CreateOpenGlobalDataRequest constuctGlobelRequest() {
  28. CreateOpenGlobalDataRequest globalRequest
  29. = new CreateOpenGlobalDataRequest();
  30. //************必要属性*************/
  31. //mPaaS 控制台获取的 APPID
  32. globalRequest.setAppId("BE9C457161429");
  33. //mPaaS 控制台获取的 WorkspaceId
  34. globalRequest.setWorkspaceId("sit");
  35. //mPaaS 控制台移动同步中配置的同步标识
  36. globalRequest.setBizType("test-global");
  37. //实际业务消息体,自定义长度不超过 4096
  38. globalRequest.setPayload("testtestata");
  39. //业务 ID,保证唯一,长度不超过 100
  40. globalRequest.setThirdMsgId("test_third_msg_id_" + System.currentTimeMillis());
  41. //************非必要属性*************/
  42. //推送目标设备的操作系统 iOS 或 Android 为空时不限制操作系统
  43. globalRequest.setOsType("IOS");
  44. //持的最小客户端版本号,如:8.6.0.0.9999 ,可为空 为空将不限制最小版本号
  45. globalRequest.setAppMinVersion("0.0.0.0");
  46. //支持的最大客户端版本号,如:9.0.0.0.9999,可为空 为空将不限制最大版本号
  47. globalRequest.setAppMaxVersion("100.100.100.100");
  48. //最大 Uid
  49. globalRequest.setMaxUid(Long.valueOf(99));
  50. //最小 Uid
  51. globalRequest.setMinUid(Long.valueOf(1));
  52. //需要推送的灰度 Uid 00~99,字符串数组
  53. globalRequest.setUids("01,02,99");
  54. globalRequest.setValidTimeStart(System.currentTimeMillis());
  55. globalRequest.setValidTimeEnd(System.currentTimeMillis() + (1000 * 3600));
  56. return globalRequest;
  57. }

参数说明

业务参数信息如下:

名称 类型 是否必须 示例 描述
appId String ONEX570DA892117 从 mPaaS 控制台获取的 App ID。
workspaceId String PROD 从 mPaaS 控制台获取的 Workspace ID。
bizType String UCHAT 在 mPaaS 控制台配置的同步标识,参见 控制台简介
payload String testtestatapalayd 实际业务消息体,自定义格式,长度不超过 4096。
thirdMsgId String 1760339273 一次数据同步请求 ID。同一个同步标识内唯一,ID 重复的请求将会被忽略。须小于 100 Byte。
osType String IOS/ANDROID 按手机平台过滤进行推送。默认情况下不传递参数,即不过滤,iOS 与 Android 平台均会推送。
appMinVersion String 0.0.0.0 推送数据过滤客户端版本,仅向大于等于该版本号的客户端发送推送。
appMaxVersion String 100.100.100.100 推送数据过滤客户端版本,仅向小于等于该版本号的客户端发送推送。
validTimeStart String 1584448493913 当前时间大于等于 validTimeStart 时才会推送。
validTimeEnd String 1584452093913 当前时间小于等于 validTimeEnd 时才会推送。
maxUid Long 99 同步范围区间最大 Uid(用户 ID 或设备 ID 倒数第 2、3 位),如果非字母,需转化为 ASCII 码。
minUid Long 00 同步范围区间最小 Uid(用户 ID 或设备 ID 倒数第 2、3 位),如果非字母,需转化为 ASCII 码。
uids String 01,02,99 优先级高于 maxUid 及 minUid。
离散的用户 ID 段(用户 ID 或设备 ID 倒数第 2、3 位),如果非字母,需转化为 ASCII 码。

全局(网)数据同步结果码

结果码 简述 解决方案
SUCCESS 成功 成功
ARGS_IS_NULL 必要参数为空 检查是否已完整按照非空逻辑传递参数。
PAYLOAD_LONG PAYLOAD 消息体过长 检查 playload 属性参数长度是否超过限制。
THIRD_MSG_ID_LONG 三方业务 ID 过长 检查三方业务 ID 长度是否超过限制。
BIZ_NOT_ONLINE 业务场景同步标识未提交上线 前往 mPaaS 控制台 > 数据同步 检查 bizType 对应同步标识已配置并提交上线。
THIRD_MSG_ID_IS_NULL 三方业务 ID 为空 检查三方业务 ID 是否为空。
SYSTEM_ERROR 系统异常 联系技术支持确认系统异常原因。
NOT_SUPPORT_GLOBAL 不支持全局业务同步标识调用 根据 BizType,前往 mPaaS 控制台 > 数据同步 检查同步标识是否为指定用户或者指定设备推送类型。
INVALID_TENANT_ID 无效租户 ID 检查 appId 是否正确,是否有权限使用。