Это com.гуглить.андроид.c2dm.намерение.Получите все еще в пользе?

Я видел, что сам c2dm устарел. Но новый метод, Google Cloud Messaging, похоже, отправляет намерения с com.гуглить.андроид.c2dm.намерение.Получить действие.

мой код использует это, чтобы получить регистрационный ключ:

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

вещи поступают правильно, но мне интересно, оставил ли я что-то в наполовину устаревшем состоянии.

2 ответов


да 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.гуглить.андроид.СБМ.ОЦМ.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>