すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:Java SDK とサービスの統合

最終更新日:Jan 17, 2025

このトピックでは、Java SDK を使用してサーバー上のデータ同期サービスにアクセスする方法について説明します。

JAR パッケージのインポート

Maven 構成が完了したら、マスター pom.xml ファイルに以下の依存関係を導入します。

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-mpaas</artifactId>
    <version>3.0.10</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <optional>true</optional>
  <version>[4.3.2,5.0.0)</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_ENVMPAAS_SK_ENV を追加し、準備した AccessKey ID と AccessKey Secret を書き込みます。

    2. Windows システムを再起動します。

API の説明

単一データ同期インターフェイス

単一データ同期インターフェイスは、指定されたユーザーまたはデバイスにデータを同期するために使用されます。

パラメーター

ビジネス パラメーターは次のとおりです。

パラメーター

データ型

必須

説明

appId

String

必須

ONEX570DA892117

mPaaS コンソールから App ID を取得します。

workspaceId

String

必須

PROD

mPaaS コンソールからワークスペース ID を取得します。

bizType

String

必須

UCHAT

mPaaS コンソールで構成された同期識別子。詳細については、「コンソールの概要」をご参照ください。

linkToken

String

必須

プッシュ ターゲット ID。プッシュがユーザーに基づく場合は、ユーザー ID を入力します。プッシュがデバイスに基づく場合は、デバイス ID を入力します。

payload

String

必須

testpayload

カスタム形式の実際のビジネス メッセージ本文。長さは 4,096 文字以内です。

thirdMsgId

String

必須

1760339273

1 つのデータ同期の要求 ID。1 つの同期構成に対して一意です。重複 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 以前の場合にのみ、データがプッシュされます。

結果コード

結果コード

説明

解決策

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

App ID が正しいかどうか、および App ID を使用する権限があるかどうかを確認します。

サンプル コード

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.mpaas.model.v20201028.CreateOpenSingleDataRequest;
import com.aliyuncs.mpaas.model.v20201028.CreateOpenSingleDataResponse;
import com.aliyuncs.profile.DefaultProfile;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

public class MsyncPopDemo {

    public static void main(String[] args) {
        // 要求情報。AccessKey ID と AccessKey Secret 以外は固定できます。
        DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");

        // Alibaba Cloud アカウント AccessKey には、すべての API へのアクセス権があります。API アクセスまたは日常の運用と保守には、RAM ユーザーを使用することをお勧めします。
        // AccessKey ID と AccessKey Secret をプロジェクト コードに保存しないことを強くお勧めします。保存すると AccessKey が漏洩し、アカウント下のすべてのリソースのセキュリティが脅かされる可能性があります。
        // この例では、AccessKey ID と AccessKey Secret を環境変数に保存する例を使用しています。ビジネス ニーズに応じて構成ファイルに保存することもできます。
        String accessKeyId = System.getenv("MPAAS_AK_ENV");
        String accessKeySecret = System.getenv("MPAAS_SK_ENV");

        // DefaultAcsClient インスタンスを作成し、初期化します。
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou", // リージョン ID
                accessKeyId,   // RAM アカウントの AccessKey ID
                accessKeySecret);  // RAM アカウントの AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);

        CreateOpenSingleDataRequest singleRequest = constructSingleRequest();

        CreateOpenSingleDataResponse singleDataResponse;
        try {
            singleDataResponse = client.getAcsResponse(singleRequest);
            System.out.println("singleDataResponse:" +
                    ToStringBuilder
                            .reflectionToString(singleDataResponse, ToStringStyle.SHORT_PREFIX_STYLE));

        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    }

    private static CreateOpenSingleDataRequest constructSingleRequest() {

        CreateOpenSingleDataRequest singleRequest
                = new CreateOpenSingleDataRequest();
        // *************必須プロパティ*************/

        // mPaaS コンソールから取得した App ID
        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));

        return singleRequest;

    }
重要

AccessKey に AliyunMPAASFullAccess 権限があることを確認してください。詳細については、「RAM ユーザーのアプリケーションレベル アクセス制御」をご参照ください。

グローバル データ同期インターフェイス

グローバル データ同期インターフェイスは、すべてのデバイスにデータを同期するために使用されます。

パラメーター

ビジネス パラメーターは次のとおりです。

パラメーター

データ型

必須

説明

appId

String

必須

ONEX570DA892117

mPaaS コンソールから App ID を取得します。

workspaceId

String

必須

PROD

mPaaS コンソールからワークスペース ID を取得します。

bizType

String

必須

UCHAT

mPaaS コンソールで構成された同期識別子。詳細については、「コンソールの概要」をご参照ください。

payload

String

必須

testtestatapalayd

実際のサービス メッセージ本文。カスタム形式で、長さは 4096 文字以内です。

thirdMsgId

String

必須

1760339273

1 つのデータ同期要求 ID。1 つの同期識別子に対して一意です。重複 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。Uid は、ユーザー ID またはデバイス ID の最後から 2 番目と 3 番目の文字です。Uid がアルファベットでない場合は、Uid を ASCII に変換する必要があります。

minUid

Long

いいえ

00

同期範囲の最小 Uid。Uid は、ユーザー ID またはデバイス ID の最後から 2 番目と 3 番目の文字です。Uid がアルファベットでない場合は、Uid を ASCII に変換する必要があります。

uids

String

いいえ

01,02,99

優先度は maxUid と minUid よりも高くなります。

離散 Uid セグメント。Uid は、ユーザー ID またはデバイス ID の最後から 2 番目と 3 番目の文字です。Uid がアルファベットでない場合は、Uid を 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

App ID が正しいかどうか、および App ID を使用する権限があるかどうかを確認します。

サンプル コード

public static void main(String[] args) {

        // 要求情報。AccessKey ID と AccessKey Secret 以外は固定です。
        DefaultProfile.addEndpoint("cn-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
        // DefaultAcsClient インスタンスを作成し、初期化します。
        DefaultProfile profile = DefaultProfile.getProfile(
            "cn-hongkong", // リージョン ID
            "xxxxxx", // RAM アカウントの AccessKey ID
            "xxxxxx"); // RAM アカウントの AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);

        CreateOpenGlobalDataRequest globalDataRequest = constuctGlobelRequest();

        CreateOpenGlobalDataResponse globalDataResponse;
        try {
            globalDataResponse = client.getAcsResponse(globalDataRequest);
            System.out.println("globalDataResponse:" +
                ToStringBuilder
                    .reflectionToString(globalDataResponse, ToStringStyle.SHORT_PREFIX_STYLE));

        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        } catch (com.aliyuncs.exceptions.ClientException e) {
            e.printStackTrace();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    }

 private static CreateOpenGlobalDataRequest constuctGlobelRequest() {

        CreateOpenGlobalDataRequest globalRequest
            = new CreateOpenGlobalDataRequest();

        // *************必須プロパティ*************/
        // mPaaS コンソールから取得した App ID
        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));

        return globalRequest;

    }
重要

AccessKey に AliyunMPAASFullAccess 権限があることを確認してください。詳細については、「RAM ユーザーのアプリケーションレベル アクセス制御」をご参照ください。