AndroidサービスC2DMの特徴
C2DMの主な機能:
- サードパーティのアプリケーションサーバーがAndroidアプリケーションに小さなメッセージを送信できるようにします。 メッセージングサービスは、メッセージを介して大量のユーザーデータを送信することを目的としていません。 それどころか、サーバーに新しいデータがあり、アプリケーションがそれを取得できることをアプリケーションに伝えるために使用する必要があります。
- Androidデバイス上のアプリケーションは、メッセージを受信するために起動する必要はありません。 システムは、アプリケーションが適切なブロードキャストレシーバーと権限でインストールされている場合、メッセージが到着するとターゲットブロードキャストを介してアプリケーションを起動します。
- Googleサービスの既存の接続を使用します。 これには、ユーザーが携帯端末でGoogleアカウントを設定する必要があります。
アーキテクチャの概要
クラウドとデバイス間のメッセージングには、2つの部門に分類できる重要な用語と概念が含まれています。 これは:
- コンポーネント
- クレデンシャル
クレデンシャル
すべての関係者が承認され、メッセージが適切な場所にルーティングされるようにするために、C2DMのさまざまな段階で使用される識別子とトークン。
送信者ID
これは、アプリケーション開発者に関連付けられたメールアカウントです。 送信者IDは、登録プロセス中に、デバイスにメッセージを送信できるAndroidアプリケーションを識別するために使用されます。 この識別子は通常、個人アカウントではなく役割に基づいています。たとえば、my-app @ gmail.com
アプリケーションID
これは、メッセージを受信するために登録するアプリケーションの識別子です。 アプリケーションは、マニフェストからのパッケージの名前によって識別されます。 これにより、メッセージが正しいアプリケーションに向けられます。
登録ID
C2DM Androidサーバーによってアプリケーションに発行され、メッセージを受信できるようにする識別子。 アプリケーションは登録識別子を受信するとすぐに、それをサードパーティのアプリケーションサーバーに送信します。サードパーティのアプリケーションサーバーは、それを使用して、このアプリケーションのメッセージを受信するために登録した各デバイスを識別します。 つまり、登録識別子は特定のデバイスで実行されている特定のアプリケーションに関連付けられています。 C2DMのGoogleアカウントが機能するには、モバイルデバイスに少なくとも1つの承認済みGoogleアカウントが必要です。
送信者認証トークン
ClientLoginAuthは、サードパーティのアプリケーションサーバーに保存されているトークンであり、アプリケーションサーバーにGoogleサービスへのアクセスを許可します。 トークンは、メッセージを送信するリクエストのPOSTヘッダーに含まれています。
C2DMのライフサイクル
クラウドとデバイス間のメッセージングで使用される主なプロセス:
- C2DMの有効化:モバイルデバイスで実行されているAndroidアプリケーションは、メッセージを受信するために登録します。
- メッセージの送信:サードパーティのアプリケーションサーバーがデバイスにメッセージを送信します。
- メッセージの受信:Androidアプリケーションは、C2DMサーバーからメッセージを受信します。
C2DMを有効にする
以下は、モバイルデバイスで実行されているAndroidアプリケーションがメッセージを受信するために登録されたときに発生するイベントのシーケンスです。
- アプリケーションがメッセージングサービスを初めて使用するときに、サーバーにC2DM登録要求を送信します。
この登録要求には、送信者ID(これは、アプリケーションへのメッセージの送信を許可されたアカウントです。通常、アプリケーション開発者が構成したアカウントの電子メールアドレスです)とアプリケーションIDが含まれます。 - C2DMサーバーは、アプリケーションに登録識別子を与える要求をブロードキャストします。
アプリケーションは、将来の参照のためにこの識別子を保存します。 Googleは登録識別子を定期的に更新する場合があるため、アプリケーションは、登録インテントを複数回呼び出すことができるように設計されています。 - 登録を完了するために、アプリケーションは登録識別子をアプリケーションサーバーに送信します。 通常、アプリケーションサーバーはデータベースに登録識別子を格納します。
登録識別子は、アプリケーション自体が登録をキャンセルするか、Googleがアプリケーションの登録識別子を更新するまで有効です。
メッセージ送信
アプリケーションサーバーがメッセージを送信するには、次の条件が満たされている必要があります。
- アプリケーションには、特定のデバイスのメッセージを受信できるようにする登録識別子があります。
- 登録識別子はアプリケーションサーバーに保存されます。
アプリケーションサーバーがメッセージを送信できるようにするために必要なもう1つの条件があります:クライアントログイン認証トークン。 クライアントログイントークンは、アプリケーションサーバーが特定のAndroidアプリケーションにメッセージを送信することを許可します。 アプリケーションサーバーには、特定のサードパーティアプリケーション用の1つのクライアントログイントークンといくつかの登録識別子があります。 各登録識別子は、特定のサードパーティアプリケーションのメッセージングサービスを使用するために登録した特定のデバイスを表します。
アプリケーションサーバーがメッセージを送信するときに発生するイベントのシーケンス:
- アプリケーションサーバーはC2DMメッセージをサーバーに送信します。
- デバイスが非アクティブの場合、Googleはキューに入れてメッセージを保存します。
- デバイスがオンラインの場合、Googleはデバイスにメッセージを送信します。
- デバイス上で、システムは、適切な権限を持つターゲットブロードキャストを介して特定のアプリケーションにメッセージをブロードキャストします。これにより、ターゲットアプリケーションのみがメッセージを受信します。 これにより、アプリケーションが起動します。 アプリケーションは、メッセージを受信するために予備起動を必要としません。
- アプリケーションはメッセージを処理します。 アプリケーションが自明でない処理を実行する場合は、ウェイクロックを使用して、サービスで処理を実行することができます。
アプリケーションは、メッセージを受信する必要がなくなった場合、C2DMの登録を解除できます。
メッセージを受け取る
これは、モバイルデバイスで実行されているAndroidアプリケーションがメッセージを受信したときに発生する一連のイベントです。
- システムは着信メッセージを受信し、メッセージから生のキー/値のペアを抽出します。
- システムは、追加のパラメーターのセットとして、キー/値のペアを(インテント内の)要求でターゲットAndroidアプリケーションに渡します。
- Androidアプリケーションは、キー(要求)からキーから生データを抽出し、データを処理します。