Android GCM的问题

时间:2013-05-17 23:08:14

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

我正在将GCM集成到我的应用中(基于this Google的文章)。他们声称“它还提供了推荐的简化注册API”。我觉得这是痛苦的屁股。我经历了几层问题,现在我仍然坚持下面的问题:

文章提到:

  • MyBroadcastReceiver(在清单中)和GcmBroadcastReceiver(在代码中)。

    我认为它是一样的,而且清单中的正确名称应为GcmBroadcastReceiver

  • MyIntentService(在清单中)并且在代码中根本没有提及。

    据我所知,这是一项应该扩展/实施GCMBaseIntentService的服务。

这项服务让我很困惑:

  • 我正在使用String regID = GoogleCloudMessaging.register(SENDER_ID);。在这种情况下,获取regID似乎不需要GCMBaseIntentService.onRegistered()

  • 此外,我有一个接收推送消息的广播接收器GcmBroadcastReceiver。在这种情况下,GCMBaseIntentService.onMessage()是不必要的。

考虑到这一点,我觉得我应该使用GCMBaseIntentService + GcmBroadcastReceiverGCMBaseIntentService

请问,有人可以解释我应该使用这个讨厌的简化注册API的哪些组合?

1 个答案:

答案 0 :(得分:4)

  

在移动设备上运行的Android应用程序通过调用GoogleCloudMessaging方法寄存器(senderID ...)来注册接收消息。此方法为GCM注册应用程序并返回注册ID。 这种简化的方法取代了以前的GCM注册流程。

基于此,GCMBaseIntentService在使用新注册方法时已过时。它由GcmBroadcastReceiverGoogleCloudMessaging替换。

我不知道新注册过程以何种方式比旧注册过程更好。如果您不打算使用GCM将消息从设备发送到云,则可以使用旧的GCMBaseIntentServiceThis link显示了旧的做事方式。旧的方式也需要广播接收器,但你使用谷歌提供的类,你必须编写的唯一代码(除了启动注册)是一个扩展GCMBaseIntentService的类,你实现{{1} }和onRegistered

如果您想使用新的“简化”注册,则只需onMessage来处理邮件,GcmBroadcastReceiver进行注册。

至于清单:

GoogleCloudMessaging.register是可选的:

  

处理广播接收器接收的意图的意图服务。的可选

.MyIntentService可能是指你应该实现的广播接收器,而.MyBroadcastReceiver就是这种接收器的一个例子。