我正在将gcm集成到我的应用程序中(基于thisgoogle的文章)。他们声称“它还提供了一个简化的注册API,这是推荐的。”我觉得这很痛苦。我经历了几层问题,现在陷入了以下困境:
文章提到:
MyBroadcastReceiver(在清单中)和GcmBroadcastReceiver(在代码中)。
我以为是同一件事,正确的名字应该是GcmBroadcastReceiver
MyIntentService(在清单中)并且根本没有在代码中提到。
据我所知,这是一个应该扩展/实现GCMBaseIntentService的服务。
这件服务的事让我很困惑:
我正在使用String regID = GoogleCloudMessaging.register(SENDER_ID);。在这种情况下,GCMBaseIntentService.onRegistered()似乎不需要获取regid。
另外,我还有一个接收推送消息的广播接收器。在这种情况下,GcmBroadcastReceiver是不必要的。
考虑到这一点,我觉得应该使用GCMBaseIntentService.onMessage()+GCMBaseIntentServiceGcmBroadcastReceiver
拜托,有人能解释一下我应该把这些和这个讨厌的流线型注册api结合起来使用吗?

最佳答案

在移动设备上运行的android应用程序通过调用googlecloudmessaging method register(senderid…)来注册接收消息。此方法注册GCM的应用程序并返回注册ID。此简化方法将替换以前的GCM注册过程。
基于此,GCMBaseIntentService在使用新的注册方法时已过时。替换为GcmBroadcastReceiverGoogleCloudMessaging
我不知道新的注册程序在哪方面比旧的好。如果您不打算使用gcm将消息从设备发送到云,那么您可以使用旧的GCMBaseIntentServiceThis link显示了旧的做事方式。旧的方法还需要广播接收器,但是您使用google提供的类,并且您必须编写的唯一代码(除了启动注册之外)是一个扩展GCMBaseIntentService的类,在该类中实现onRegisteredonMessage
如果您想使用新的“streamlined”注册,您只需要GcmBroadcastReceiver来处理消息,而GoogleCloudMessaging.register来注册。
至于舱单:
.MyIntentService是可选的:
处理广播接收器接收到的意图的意图服务。可选的。
.MyBroadcastReceiver可能指的是您应该实现的广播接收器,GcmBroadcastReceiver就是这样一个接收器的示例。

10-07 21:54