全部產品
Search
文件中心

Mobile Platform as a Service:Java SDK 接入

更新時間:Jan 09, 2026

本文介紹如何以 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,如果是基於使用者推送,填入使用者識別碼。如果同步配置是基於裝置推送,填入裝置識別碼。

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");
    // 需要推送的使用者識別碼 或者裝置識別碼(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

按手機平台進行推送。預設情況下不傳遞參數,即不過濾,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(使用者識別碼 或裝置識別碼 倒數第 2、3 位),如果非字母,需轉化為 ASCII 碼。

minUid

Long

00

同步範圍區間最小 Uid(使用者識別碼 或裝置識別碼 倒數第 2、3 位),如果非字母,需轉化為 ASCII 碼。

uids

String

01,02,99

優先順序高於 maxUid 及 minUid。離散的使用者識別碼 段(使用者識別碼 或裝置識別碼 倒數第 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 帳號進行應用層級的存取控制