我已经看到c2dm本身已被弃用。但新方法Google Cloud Messaging似乎发送了以 com.google.android.c2dm.intent.RECEIVE 作为操作的意图。
我的代码使用它来获取注册码:
gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
gcm.register(SENDER_ID);
事情正确到达,但我想知道我是否已经将某些东西置于半弃状态。
答案 0 :(得分:13)
是的,com.google.android.c2dm.intent.RECEIVE
仍在使用中。从GCM服务器接收包含GCM消息的广播时使用它。即使长期弃用C2DM,GCM仍会使用一些包含c2dm
的名称。
正如您在此清单示例中所看到的(取自GCM guide),有多个地方仍使用包含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>
答案 1 :(得分:2)
至于接收者声明
<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建议用com.google.android.gms.gcm.GcmReceiver替换BroadcastReceiver,如下所示。
<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>
答案 2 :(得分:0)
com.google.android.c2dm.intent.RECEIVE