クラス GCMIntentService に以下の 2 つのメソッドがありますが、regID の登録時に onRegistered() メソッドが呼び出されますが、メッセージを送信すると、onMessage() は呼び出されません。
@Override
protected void onRegistered(Context context, String registrationId)
{
Log.i(tag, "onRegistered called");
GCMRegistrar.setRegisteredOnServer(context, true);
}
@Override
protected void onMessage(Context context, Intent intent)
{
Log.i(TAG, "Received message");
sendNotification("A", "B");
}
以下は私のマニフェストです
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.myApp.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.myApp" />
</intent-filter>
</receiver>
<service android:name="com.myApp.GCMIntentService" />
私はこのような登録IDを取得しています:
regid = getRegistrationId(context);
//Check if we have registered.
if (regid.length() == 0) {
GCMRegistrar.checkDevice(myActivity.this);
GCMRegistrar.checkManifest(myActivity.this);
GCMRegistrar.register(myActivity.this, SENDER_ID);
} else {
Log.i(tag, "You are already registered.");
Log.i(tag, "The registration ID is : " + regid);
}