Amazon Device Messaging(ADM)について
Amazon Device Messaging(ADM)を使用すると、アプリを実行するAmazonデバイスにメッセージを送信することができます。これにより、ユーザーに最新の情報を提供し、アクションにつながる働きかけを行うことが可能になります。ゲームのアップデート情報を提供したり、友人からメッセージが届いたことを知らせたりなど、ADMをユーザーとの継続的なコミュニケーションに役立ててください。
Google Firebase Cloud Messaging(FCM)を使用している既存のAndroidアプリがある場合は、デバイスメッセージングの移行ガイドに従ってください。または、A3L Messaging SDKを使用することもできます。
なお、ADMはKindle Fire(第1世代)ではサポート対象外となっています。
Amazon Device Messaging(ADM)SDKのダウンロード
ADM SDKは以下からダウンロード可能です。
このダウンロードには、APIリファレンスドキュメントと、ADM統合済みのサンプルアプリが含まれています。このADM SDKをダウンロードすると、Program Materials License Agreementに同意したものとみなされます。SDKの内容は任意の場所に展開してください。
ADMのアーキテクチャ
ADMのアーキテクチャは、次の主要原則に基づいています。
-
保護されている: 開発者サーバーは、OAuth 2.0クライアントの認証フローで検証されます。メッセージがデバイスに渡されると、エンドポイント接続の認証が行われ、業界標準のSSL暗号化で保護されます。ADMはデバイスのAndroidパーミッションを使用して、メッセージを対象アプリのみに送信します。
-
シンプル: ADMは、メッセージデータをアプリに配信する転送メカニズムです。組み込みのユーザーインターフェイスや、そのほかのデータ処理機能はありません。たとえば、アプリがメッセージを受信した際に、デバイスのスリープ解除、通知やカスタムユーザーインターフェイスの表示、データの同期などを実行できます。
-
フレキシブル: ADMは、送信されたデータの処理は一切行いません。メッセージの要件は、サイズが6KBを超えないことと、JSONObjectのキー:値ペア形式でデータを送信することだけです。
ADMを介して送信するメッセージには、次のような特徴もあります。
- メッセージを配信するためにデバイスのスリープ状態を解除します。
- メッセージの配信や順序は保証されません。
- ネットワーク状況の変化により、メッセージは複数回配信される場合があります。アプリ側でメッセージの重複インスタンスを処理できるようにしておく必要があります。
- メッセージには有効期限があります。デフォルトの有効期限は1週間で、最大は1か月です。メッセージ送信時に有効期限をカスタム設定することもできます。有効期限が切れたメッセージは配信キューから削除されることがあります。
役割とその内容
ADM経由のメッセージ送信には、4つのコンポーネントが使用されます。そのうち2つは、開発者側で制御することができます。
開発者サーバー
- アクセストークンを使用して、自身のIDをADMサーバーに示します。
- アプリに配信するメッセージをADMサーバーに送信します。
ADMサーバー
- アクセストークンを使用して、開発者サーバーのIDを確認します。
- 開発者サーバーからデバイス上のADMクライアントにメッセージを配信します。
ADMクライアント
- ADMサーバーに関するアプリの登録プロセスを処理します。
- ADMサーバーからメッセージを受信して、アプリに渡します。
アプリ
- 開発者サーバーからメッセージを受信できるよう、ADMクライアントに登録します。
- 着信メッセージをADMクライアントから受信して処理します。
メッセージフロー
ADM経由のメッセージ配信フローを大まかに示すと、次のようになります。
- 開発者サーバーが、JSONデータを含むメッセージをADMサーバーに送信します。
- ADMサーバーが、アプリがインストールされたデバイスのADMクライアントにそのメッセージを送信します。
- ADMクライアントがJSON形式のメッセージデータを取得し、そのデータをAndroidのIntentオブジェクトにアタッチされた一連のエクストラとしてアプリに渡します。
IDとセキュリティ
ADMを使用する場合は、開発者サーバー、アプリ、メッセージの宛先を識別するために以下の要素を組み合わせ、データのセキュリティも確保します。
-
登録ID: 登録IDによって、特定のデバイスで実行中の、特定ユーザーに登録されたアプリインスタンスが識別されます。アプリが初めてデバイスにインストールされると、アプリによってADMに登録IDがリクエストされます(アプリの統合方法を参照)。開発者サーバーはその登録IDを使用して、適切なデバイスやユーザーにメッセージを送信します。ユーザーがアプリをアンインストールして同じデバイスに再インストールした場合、アプリの登録IDが変わる場合もあります。
-
APIキー: APIキーは、デバイス上で対象のアプリを識別するためにADMが使用するメタデータです。APIキーはAmazonから開発者に割り当てられます。詳細については、認証情報の取得方法を参照してください。
-
OAuthクライアント認証情報: クライアントの認証情報は「クライアント識別子」と「クライアントシークレット」の値で構成され、Amazonから開発者に割り当てられます。詳細については、認証情報の取得方法を参照してください。開発者サーバーは、リクエストでこの認証情報を使用して、アクセストークンを取得します。
-
アクセストークン: アクセストークンは、メッセージを送信できるように、開発者サーバーの識別情報をADMに確認するための一時的なメタデータです。開発者サーバーは、ADMサーバーへのリクエスト呼び出しでクライアント認証情報を提供して、アクセストークンを取得します。開発者サーバーがアクセストークンをリクエストした場合、アクセストークンとその存続期間(秒単位)の情報が含まれたレスポンスが返されます。詳細については、アクセストークンのリクエスト方法を参照してください。
ADMの識別子と認証情報
次の表に、ADMの識別子と認証情報を示します。
ID/認証情報 | 取得先 | 取得元 | 使用先 | 一意性 |
---|---|---|---|---|
登録ID | アプリのインスタンス | ADMサーバー。アプリインスタンスがインストールされたデバイスのADMクライアントを介して提供されます。 | 開発者サーバー、ADMサーバー、ADMクライアント。アプリの適切なインスタンスにメッセージをルーティングするために使用されます。 | ユーザー、デバイス、アプリのインストールごとに一意。登録IDが無効または非アクティブになると、その登録IDへのメッセージ送信は失敗となり、ADMから適切なエラーメッセージが返されます。たとえば、ユーザーがアプリをアンインストールしてから再度インストールした場合、登録IDが新しくなる可能性があります。 |
APIキー | 開発者(アプリ用) | Amazon。このプロセスの詳細については、認証情報の取得方法を参照してください。 | ADMクライアント。アプリのID確認に使用されます。 | アプリの異なるバージョン(デバッグバージョンと実稼働バージョンなど)では、それぞれ別のAPIキーが必要になります。 |
OAuthクライアント認証情報 | 開発者(開発者サーバー用) | Amazon。このプロセスの詳細については、認証情報の取得方法を参照してください。 | 開発者サーバーとADMサーバー。アクセストークンを取得する目的で、サーバーを識別するために使用されます。 | アプリごとに一意。 |
アクセストークン | 開発者サーバー | ADMサーバー。リクエスト呼び出しの応答時に提供されます。 | 開発者サーバーとADMサーバー。メッセージを送信できるか検証するために使用されます。 | 各開発者サーバーで使用されるアクセストークンは一度に1つだけです。以前に取得したアクセストークンが有効期限切れになった場合は、新たに取得する必要があります。 |
Last updated: 2022年5月18日