GCM
Androidに移行しようとしていますが、C2DM
現在は廃止されています。ここで説明する登録プロセスは、ここで説明する登録とは異なります。登録はどちらも同じですか?GCMRegistrar
確かに知るためのコードを見ることができますか?
5 に答える
C2DM プロジェクトを GCM に正常に移行しました。テスト済み、正常に動作します。唯一の変更点は次のとおりです。
- Android アプリで -
sender
登録時に値を変更します - サーバー側 - 認証ヘッダーと URL を変更します
Google とのやり取りに関しては、それだけでした。アプリのロジックによって決定されるいくつかの変更がさらにありました。
- Android アプリでは、登録 ID が設定にキャッシュされていました。アップグレード時に、設定から登録 ID を削除して、今回は GCM を使用して再登録を強制します。
- reg ID をサーバーに渡すロジックは、追加のブール値パラメーターを取得しました - これが C2DM または GCM reg ID の場合
- メッセージを送信するロジックは、前述のパラメーターに基づいて条件付きになりました。
サーバーから C2DM ロジックを完全に捨てるのは賢明ではありません。誰もが Android アプリをアップグレードするわけではありません。C2DM 対応の古いバージョンは、しばらくの間、世に出回る予定です。そして Google は、C2DM を短期的に継続することを約束しました。したがって、メッセージ送信は条件付きです。reg ID タイプに応じて、GCM または C2DM のいずれかに送信されます。
EDIT re: 条件付きロジック:
if($RegID_Is_GCM)
{
$Auth = GCM_Auth();
$URL = $GCM_URL;
}
else
{
$Auth = C2DM_AUTH();
$URL = $C2DM_URL;
}
それらは実際には同じものです。2 番目のメソッドは、最初のメソッドを静的メソッドにカプセル化し、ブロードキャスト レシーバを登録します。ソースを gcm.jar に添付して、自分の目で確かめてください。ソース コードは ~/android-sdks/extras/google/gcm/gcm-client/gcm-src.jar にあります。
私が GCM で最も気に入っているのは、GCM サーバーから取得するRegIDです。これは、ID だけでなく、このデバイス上のこのアプリケーションのアドレスでもあります。したがって、今回は C2DM のように登録 IDとともにデバイス ID をサーバーに送信する必要はありません。
C2DM では、登録 ID を要求するたびに、新しい ID が取得されます。
ただし、GCM RegId では、アプリケーション パッケージとデバイス IDを使用して生成されるため、登録 ID を何度も要求すると、同じ RegIdを受け取ることになります。
また、アプリケーションをアンインストールして再度インストールする場合でも、GCM サーバーは同じ登録 ID を提供します。
したがって、1 つの登録 ID で、サーバーに送信するデバイス ID は必要ありません。
GCMRegistrar は、最初のページで説明した処理を実行する単なるヘルパーです。
クラスはこちらからご覧いただけます。android-sdk\extras\google\gcm\gcmclient\src\com\google\android\gcm
.
C2DM から GCM への移行に成功しました。http://android.amolgupta.in/2012/07/google-cloud-messaging-gcm-tutorial.htmlで GCM を実装する方法も文書化しました。