简短版本:目标com.google.android.c2dm.intent.REGISTRATION
是否仍在使用或是否已被GCM完全弃用?
更长的版本:Google的gcm-demo-client
在其过滤器中声明了此意图,但是,如果我按照相同的步骤,当我调用gcm.register()
和然后,我的广播接收者因为REGISTRATION过滤器而收到额外的注册ID,而第二个注册ID是假的(我无法向其发送任何通知)。
此时,我正在考虑删除REGISTRATION
过滤器(仅保留RECEIVE
)但我想确保我没有遗漏协议中的重要内容。
答案 0 :(得分:5)
您可能无法接收一小部分用户的注册ID。
第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>