我正在将GCM集成到我的应用中(基于this Google的文章)。他们声称“它还提供了推荐的简化注册API”。我觉得这是痛苦的屁股。我经历了几层问题,现在我仍然坚持下面的问题:
文章提到:
MyBroadcastReceiver
(在清单中)和GcmBroadcastReceiver
(在代码中)。
我认为它是一样的,而且清单中的正确名称应为GcmBroadcastReceiver
MyIntentService
(在清单中)并且在代码中根本没有提及。
据我所知,这是一项应该扩展/实施GCMBaseIntentService
的服务。
这项服务让我很困惑:
我正在使用String regID = GoogleCloudMessaging.register(SENDER_ID);
。在这种情况下,获取regID似乎不需要GCMBaseIntentService.onRegistered()
。
此外,我有一个接收推送消息的广播接收器GcmBroadcastReceiver
。在这种情况下,GCMBaseIntentService.onMessage()
是不必要的。
考虑到这一点,我觉得我应该使用GCMBaseIntentService
+ GcmBroadcastReceiver
或GCMBaseIntentService
。
请问,有人可以解释我应该使用这个讨厌的简化注册API的哪些组合?
答案 0 :(得分:4)
在移动设备上运行的Android应用程序通过调用GoogleCloudMessaging方法寄存器(senderID ...)来注册接收消息。此方法为GCM注册应用程序并返回注册ID。 这种简化的方法取代了以前的GCM注册流程。
基于此,GCMBaseIntentService
在使用新注册方法时已过时。它由GcmBroadcastReceiver
和GoogleCloudMessaging
替换。
我不知道新注册过程以何种方式比旧注册过程更好。如果您不打算使用GCM将消息从设备发送到云,则可以使用旧的GCMBaseIntentService
。 This link显示了旧的做事方式。旧的方式也需要广播接收器,但你使用谷歌提供的类,你必须编写的唯一代码(除了启动注册)是一个扩展GCMBaseIntentService
的类,你实现{{1} }和onRegistered
。
如果您想使用新的“简化”注册,则只需onMessage
来处理邮件,GcmBroadcastReceiver
进行注册。
至于清单:
GoogleCloudMessaging.register
是可选的:
处理广播接收器接收的意图的意图服务。的可选强>
.MyIntentService
可能是指你应该实现的广播接收器,而.MyBroadcastReceiver
就是这种接收器的一个例子。