3

我正在将 GCM 集成到我的应用程序中(基于这篇Google 的文章)。他们声称“它还提供了推荐的简化注册 API。” 我觉得很蛋疼。我解决了几层问题,现在我陷入了以下问题:

文章提到:

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

    我认为这是同一件事,清单中的正确名称应该是GcmBroadcastReceiver

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

    据我了解,这是一项应该扩展/实施的服务GCMBaseIntentService

这个服务的事情让我很困惑:

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

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

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

拜托,有人可以解释一下我应该在这个讨厌的简化注册 API 中使用哪种组合?

4

1 回答 1

4

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

基于此,GCMBaseIntentService在使用新注册方法时已过时。它被GcmBroadcastReceiver和取代GoogleCloudMessaging

我不知道新的注册过程在哪些方面比旧的更好。如果您不打算使用 GCM 将消息从设备发送到云端,您可以坚持使用旧的GCMBaseIntentService. 此链接显示了旧的做事方式。旧方法也需要广播接收器,但您使用 Google 提供的类,并且您必须编写的唯一代码(除了启动注册之外)是一个扩展类,GCMBaseIntentService您可以在其中实现onRegisteredonMessage

如果您想使用新的“精简”注册,您只需要GcmBroadcastReceiver处理消息和GoogleCloudMessaging.register注册。

至于清单:

.MyIntentService是可选的:

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

.MyBroadcastReceiver可能是指您应该实现的广播接收器,并且GcmBroadcastReceiver是此类接收器的示例。

于 2013-05-18T02:11:49.457 回答