Java SDK 接入

更新时间:
复制 MD 格式

本文介绍如何以 Java SDK 的方式在服务端接入数据同步服务。

引入 Jar 包

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

说明

对于非金融区用户,消息推送 V2.0 SDK 最新版本为 5.0.2;对于金融区用户,消息推送 V2.0 SDK 最新版本为 2.1.11。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>mpaas20201028</artifactId>
    <version>5.0.1</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>tea-openapi</artifactId>
    <version>0.3.6</version>
</dependency>

环境变量配置

配置环境变量 MPAAS_AK_ENV 和 MPAAS_SK_ENV。

  • Linux 和 macOS 系统配置方法执行以下命令:

    export MPAAS_AK_ENV=<access_key_id>
    export MPAAS_SK_ENV=<access_key_secret>
    说明

    access_key_id 替换为已准备好的 AccessKey ID,access_key_secret 替换为 AccessKey Secret。

  • Windows 系统配置方法

    1. 新建环境变量,添加环境变量 MPAAS_AK_ENV 和 MPAAS_SK_ENV,并写入已准备好的 AccessKey ID 和 AccessKey Secret。

    2. 重启 Windows 系统。

接口说明

单数据同步接口

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

参数说明

业务参数信息如下:

名称

类型

是否必须

示例

描述

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 消息体过长

检查 payload 属性参数长度是否超过限制。

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 是否正确,是否有权限使用。

代码示例

import com.alibaba.fastjson.JSON;
import com.aliyun.mpaas20201028.Client;
import com.aliyun.mpaas20201028.models.CreateOpenSingleDataRequest;
import com.aliyun.mpaas20201028.models.CreateOpenSingleDataResponse;
import com.aliyun.teaopenapi.models.Config;

public static void main(String[] args) throws Exception {
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // 本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
    Config config = new Config();
    // 必填,您的 AccessKey ID
    config.setAccessKeyId(System.getenv("MPAAS_AK_ENV"));
    // 必填,您的 AccessKey Secret
    config.setAccessKeySecret(System.getenv("MPAAS_SK_ENV"));
    // mPaaS 的 REGION_ID 和 Endpoint,以杭州非金为例
    config.setRegionId("cn-hangzhou");
    config.setEndpoint("mpaas.cn-hangzhou.aliyuncs.com");
    Client client = new Client(config);

    CreateOpenSingleDataRequest singleRequest = new CreateOpenSingleDataRequest();
    //*************必要属性*************/
    
    // mPaaS 控制台获取的 APPID
    singleRequest.setAppId("xxxxxxx");
    // mPaaS 控制台获取的 WorkspaceId
    singleRequest.setWorkspaceId("xxxxxxxx");
    // mPaaS 控制台移动同步中配置的同步标识
    singleRequest.setBizType("TEST-SYNC");
    // 需要推送的用户 ID 或者设备 ID(UTDID)
    singleRequest.setLinkToken("testUserId");
    // 实际业务消息体,自定义长度不超过 4096
    singleRequest.setPayload("testPayload");
    // 业务 ID,保证唯一,长度不超过 100
    singleRequest.setThirdMsgId("test_third_msg_id_" + System.currentTimeMillis());

    //************非必要属性*************/
    
    // 推送目标设备的操作系统 iOS 或 Android 为空时不限制操作系统
    singleRequest.setOsType("IOS");
    // 持的最小客户端版本号,如:8.6.0.0.9999 ,可为空,为空将不限制最小版本号
    singleRequest.setAppMinVersion("0.0.0.0");
    // 支持的最大客户端版本号,如:9.0.0.0.9999,可为空,为空将不限制最大版本号
    singleRequest.setAppMaxVersion("100.100.100.100");
    // 有效期开始,可为空,为空时不限制有效起始时间
    singleRequest.setValidTimeStart(System.currentTimeMillis());
    // 有效期结束,可为空,为空时不限制有效结束时间 最长有效期为 30 天
    singleRequest.setValidTimeEnd(System.currentTimeMillis() + (1000 * 3600));

    CreateOpenSingleDataResponse openSingleData = client.createOpenSingleData(singleRequest);
    System.out.println("response==>"+JSON.toJSONString(openSingleData));
}
重要

请确保您的 AccessKey 拥有 AliyunMPAASFullAccess 权限,详情请参考对 RAM 账号进行应用级别的访问控制。

全局(网)数据同步接口

全局(网)数据同步是指将数据同步到所有设备。

参数说明

业务参数信息如下:

名称

类型

是否必须

示例

描述

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 字节。

osType

String

否

IOS/ANDROID/HARMONY

按手机平台进行推送。默认情况下不传递参数,即不过滤,iOS、Android 和 HarmonyOS 平台均会推送。

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 消息体过长

检查 payload 属性参数长度是否超过限制。

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 是否正确,是否有权限使用。

代码示例

import com.alibaba.fastjson.JSON;
import com.aliyun.mpaas20201028.Client;
import com.aliyun.mpaas20201028.models.CreateOpenGlobalDataRequest;
import com.aliyun.mpaas20201028.models.CreateOpenGlobalDataResponse;
import com.aliyun.teaopenapi.models.Config;

public static void main(String[] args) throws Exception {
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // 本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
    Config config = new Config();
    // 必填,您的 AccessKey ID
    config.setAccessKeyId(System.getenv("MPAAS_AK_ENV"));
    // 必填,您的 AccessKey Secret
    config.setAccessKeySecret(System.getenv("MPAAS_SK_ENV"));
    // mPaaS 的 REGION_ID 和 Endpoint,以杭州非金为例
    config.setRegionId("cn-hangzhou");
    config.setEndpoint("mpaas.cn-hangzhou.aliyuncs.com");
    Client client = new Client(config);

    CreateOpenGlobalDataRequest globalRequest = new CreateOpenGlobalDataRequest();
    //************必要属性*************/

    // mPaaS 控制台获取的 APPID
    globalRequest.setAppId("BE9C457161429");
    // mPaaS 控制台获取的 WorkspaceId
    globalRequest.setWorkspaceId("sit");
    // mPaaS 控制台移动同步中配置的同步标识
    globalRequest.setBizType("test-global");
    // 实际业务消息体,自定义长度不超过 4096
    globalRequest.setPayload("testtestata");
    // 业务 ID,保证唯一,长度不超过 100
    globalRequest.setThirdMsgId("test_third_msg_id_" + System.currentTimeMillis());

    //************非必要属性*************/

    // 推送目标设备的操作系统 iOS 或 Android 为空时不限制操作系统
    globalRequest.setOsType("IOS");
    // 持的最小客户端版本号,如:8.6.0.0.9999 ,可为空 为空将不限制最小版本号
    globalRequest.setAppMinVersion("0.0.0.0");
    // 支持的最大客户端版本号,如:9.0.0.0.9999,可为空 为空将不限制最大版本号

    globalRequest.setAppMaxVersion("100.100.100.100");
    // 最大 Uid
    globalRequest.setMaxUid(Long.valueOf(99));
    // 最小 Uid
    globalRequest.setMinUid(Long.valueOf(1));
    // 需要推送的灰度 Uid 00~99,字符串数组
    globalRequest.setUids("01,02,99");

    globalRequest.setValidTimeStart(System.currentTimeMillis());
    globalRequest.setValidTimeEnd(System.currentTimeMillis() + (1000 * 3600));
    CreateOpenGlobalDataResponse openGlobalData = client.createOpenGlobalData(globalRequest);
    System.out.println("response==>"+JSON.toJSONString(openGlobalData));
}
重要

请确保您的 AccessKey 拥有 AliyunMPAASFullAccess 权限,详情请参考对 RAM 账号进行应用级别的访问控制。