com.google.android.c2dm.intent.RECEIVE是否仍在使用?

时间:2014-08-08 16:25:22

标签: android android-intent push-notification google-cloud-messaging

我已经看到c2dm本身已被弃用。但新方法Google Cloud Messaging似乎发送了以 com.google.android.c2dm.intent.RECEIVE 作为操作的意图。

我的代码使用它来获取注册码:

gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
gcm.register(SENDER_ID);

事情正确到达,但我想知道我是否已经将某些东西置于半弃状态。

3 个答案:

答案 0 :(得分:13)

是的,com.google.android.c2dm.intent.RECEIVE仍在使用中。从GCM服务器接收包含GCM消息的广播时使用它。即使长期弃用C2DM,GCM仍会使用一些包含c2dm的名称。

正如您在此清单示例中所看到的(取自GCM guide),有多个地方仍使用包含c2dmC2D的名称:

<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)

Firebase云消息传递还使用了

com.google.android.c2dm.intent.RECEIVE