是否弃用了com.google.android.c2dm.intent.REGISTRATION?

时间:2014-03-06 07:12:46

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

简短版本:目标com.google.android.c2dm.intent.REGISTRATION是否仍在使用或是否已被GCM完全弃用?

更长的版本:Google的gcm-demo-client在其过滤器中声明了此意图,但是,如果我按照相同的步骤,当我调用gcm.register()然后,我的广播接收者因为REGISTRATION过滤器而收到额外的注册ID,而第二个注册ID是假的(我无法向其发送任何通知)。

此时,我正在考虑删除REGISTRATION过滤器(仅保留RECEIVE)但我想确保我没有遗漏协议中的重要内容。

3 个答案:

答案 0 :(得分:5)

您可能无法接收一小部分用户的注册ID。

https://blog.pushbullet.com/2014/02/12/keeping-google-cloud-messaging-for-android-working-reliably-techincal-post/

  

第2课:准备好注册以在某些设备上重复失败   即使创建了工作注册ID。

     

这个提示相当奇怪,可能不再具有相关性,但我没有   确认GCM中的错误是否已修复的方法,所以在这里。

     

错误是这样的:无论你多少次注册,它都是   将永远失败并在某些设备上抛出异常。即使   register正在抛出一个异常,正在运行一个工作注册ID   已创建但未返回。要获取此注册ID,请添加此项   对GCM BroadcastReceiver的IntentFilter的许可:

<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

得爱GCM。 =)

答案 1 :(得分:4)

即使是最新的GCM版本(又名GCM 3)官方GCM文档warns about the need of this permission for push support on old devices

  

如果您想支持4.4之前的KitKat设备,请将以下操作添加到接收器的intent过滤器声明中:<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

答案 2 :(得分:2)

您可能正在查看旧版Google官方演示版。 current version不使用com.google.android.c2dm.intent.REGISTRATION,您可以在此处看到:

    <receiver
        android:name=".GcmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <!-- Receives the actual messages. -->
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.google.android.gcm.demo.app" />
        </intent-filter>
    </receiver>