このトピックでは、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 システムの構成方法
新しい環境変数を作成し、環境変数 MPAAS_AK_ENV と MPAAS_SK_ENV を追加し、準備した AccessKey ID と AccessKey Secret を書き込みます。
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 ユーザーのアプリケーションレベル アクセス制御」をご参照ください。