C2DM から GCMへの切替 | 一人男子会

一人男子会

何となく思った事を書いていきます。(ピグ関連含む)

C2DMはGCMへ変更される。
と言うか、正式リリース。

既にC2DMは新規登録できない。


と言うわけで、
備忘録も兼ねてGCM対応アプリ作成法手順まとめ

1.ココでGoogle Cloud Messaging for AndroidのAPIを利用可能にする。
特に何も考えずチェックをONへ。
確認メッセージが表示されるが気にしない。

2.SDK最新化してGCMのjarを取得する。

3.Androidアプリのlibsフォルダにjarをぶち込んで参照を貼る。
コピー元:<sdk root>\extras\google\gcm\gcm-client\dist\gcm.jar

4.android manfest修正。
主な変更点はココに書いてあるのだが、
↓こいつも追加
<uses-permission android:name="android.permission.WAKE_LOCK" />

5.GCMサービスクラス追加
定義:public class GCMIntentService extends GCMBaseIntentService
ベースクラスのコンストラクタを呼び出す時に引数でプロジェクトIDを設定。
(プロジェクトIDはAPIコンソールのURLにくっついてる#project:の数字部分)

// メッセージ受取処理
@Override
protected void onMessage(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
String str = arg1.getStringExtra("message");
Log.d("GCMIntentService.onMessage","Message : " + str);
}

// 端末登録
@Override
protected void onRegistered(Context arg0, String arg1) {
Log.d("GCMIntentService.onRegistered","registerdId : " + arg1);
}

6.メインアクティビティで端末登録処理
//めんどくさいので最初にアンレジストやっちゃう
//試すだけなのでエラーとか気にしちゃ駄目
try
{
GCMRegistrar.unregister(this);
}
catch(Exception e )
{
e.printStackTrace();
}

//登録
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, "プロジェクトID");
} else {
Log.v(TAG, "Already registered");
}

7.実行して登録IDを確認

8.ココから投げてみる
かなりめんどくさい感じで作ったので画面がへぼいのはご愛嬌。
※一応ですけど、API-KEYとか登録IDとかは抜いたりしてません。

9.locatに送った文字が出てるのを確認して喜ぶ

以上。

詳細はココに書いてあるのだが、
「私英語はアレ」と言う人も居るだろう。
と言うか、自分がそうなのだから居て欲しい。