Android GCM的问题

3
我正在将GCM集成到我的应用程序中(基于this谷歌的文章)。他们声称“它还提供了一个推荐使用的简化注册API。” 我感觉很烦。我经历了几层问题,现在卡在以下问题上:
文章提到:
  • 清单中的MyBroadcastReceiver和代码中的GcmBroadcastReceiver

    我认为这是同一个东西,清单中正确的名称应该是GcmBroadcastReceiver

  • 清单中的MyIntentService在代码中没有提到。

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

这个服务让我很困惑:

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

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

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

请问有人可以解释一下这个麻烦的简化注册API应该使用哪种组合吗?

1个回答

4
在移动设备上运行的 Android 应用程序通过调用 GoogleCloudMessaging 方法 register(senderID...) 注册接收消息。该方法注册应用程序以使用 GCM,并返回注册 ID。这种流线型方法替代了以前的 GCM 注册过程。 基于此,当使用新的注册方法时,GCMBaseIntentService 已经过时。它被 GcmBroadcastReceiverGoogleCloudMessaging 替换。
我不知道新的注册过程比旧的注册过程更好在哪些方面。如果您不打算使用 GCM 从设备向云发送消息,则可以使用旧的 GCMBaseIntentService此链接 显示了旧方法。旧方法还需要广播接收器,但您使用 Google 提供的类,而且除了初始化注册之外,您只需要编写一个扩展 GCMBaseIntentService 的类,在其中实现 onRegisteredonMessage
如果要使用新的“流线型”注册,则只需要使用 GcmBroadcastReceiver 处理消息和 GoogleCloudMessaging.register 进行注册即可。
至于清单文件: .MyIntentService 是可选的:
意思是:用来处理广播接收器接收到的意图的 Intent Service。可选的。 .MyBroadcastReceiver 可能是指您应该实现的广播接收器,而 GcmBroadcastReceiver 是这样一个接收器的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接