2

出于某种原因,使用“GCMRegistrar.register(this, SENDER_ID);” 适用于 4.0 + 设备。但是,它停留在以下消息上,而没有收到来自 Google 的 GCM 通知。

注册发件人的应用程序(我的包)(我的api#)

1)清单和接收器应该是正确的,因为它在 4.2.1 上工作。

2) 我有 google play 并与 2.3.3 设备上的 google 帐户关联

我已经搜索了几天,找不到答案。任何人都知道出了什么问题或有同样的问题吗?

谢谢

4

1 回答 1

10

我发现这只是因为我没有正确设置接收器的类别。

由于我将所有源代码放在一个库项目中并在每个单独的应用程序中引用它,因此我需要重命名清单中的 3 个不同位置。

1)

<permission
        android:name="digital.dispatch.mobilebooker.base.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

   <permission
        android:name="digital.dispatch.mobilebooker.(my app name).permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

2)

<uses-permission
        android:name="digital.dispatch.mobilebooker.base.permission.C2D_MESSAGE" />

3)

<category android:name="digital.dispatch.mobilebooker.base" />

   <category android:name="digital.dispatch.mobilebooker.(my app name)" />

它在 4.0 + 设备中工作的原因是因为我只做了前两个而不是 3)。由于 4.0+ 设备不关心接收器的类别,因此它起作用了。但是,当我在 2.3.3 设备上进行测试时,该类别实际上很重要,导致它没有收到任何响应。

希望这会帮助遇到相同情况的任何其他人。

于 2013-04-16T22:22:42.493 回答