私はc2dm自体が非推奨であることを見てきました。しかし、新しいメソッドであるGoogleクラウドメッセージングは、アクションとしてcom.google.Android.c2dm.intent.RECEIVEを使用してインテントを送信するようです。
私のコードはこれを使用して登録キーを取得しています:
gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
gcm.register(SENDER_ID);
物事は正しく到着していますが、何かを非推奨の状態のままにしていたのではないかと思っています。
はい、com.google.Android.c2dm.intent.RECEIVE
はまだ使用されています。 GCMメッセージを含むGCMサーバーからブロードキャストを受信するときに使用されます。 C2DMは長い間推奨されていませんが、GCMはc2dm
を含む名前をいくつか使用しています。
このマニフェストのサンプル( GCMガイド から取得)を見るとわかるように、c2dm
またはC2D
を含む名前を使用している場所が複数あります。
<manifest package="com.example.gcm" ...>
...
<permission Android:name="com.example.gcm.permission.C2D_MESSAGE"
Android:protectionLevel="signature" />
<uses-permission Android:name="com.example.gcm.permission.C2D_MESSAGE" />
<application ...>
<receiver
Android:name=".GcmBroadcastReceiver"
Android:permission="com.google.Android.c2dm.permission.SEND" >
<intent-filter>
<action Android:name="com.google.Android.c2dm.intent.RECEIVE" />
<category Android:name="com.example.gcm" />
</intent-filter>
</receiver>
<service Android:name=".GcmIntentService" />
</application>
受信者宣言も
<receiver
Android:name=".GcmBroadcastReceiver"
Android:permission="com.google.Android.c2dm.permission.SEND" >
<intent-filter>
<action Android:name="com.google.Android.c2dm.intent.RECEIVE" />
<category Android:name="com.example.gcm" />
</intent-filter>
</receiver>
Googleは、以下のようにBroadcastReceiverをcom.google.Android.gms.gcm.GcmReceiverに置き換えることを提案しました。
<receiver
Android:name="com.google.Android.gms.gcm.GcmReceiver"
Android:exported="true"
Android:permission="com.google.Android.c2dm.permission.SEND" >
<intent-filter>
<action Android:name="com.google.Android.c2dm.intent.RECEIVE" />
<category Android:name="com.example.gcm" />
</intent-filter>
</receiver>
com.google.Android.c2dm.intent.RECEIVEは、firebaseクラウドメッセージングでも使用されます