android - Android GCM 的问题

标签 android push-notification google-cloud-messaging

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

文章提到:

  • MyBroadcastReceiver(在 list 中)和 GcmBroadcastReceiver(在代码中)。

    我假设它是同一件事, list 中的正确名称应该是 GcmBroadcastReceiver

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

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

这项服务让我很困惑:

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

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

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

有人可以解释一下我应该将这些哪些组合与这个讨厌的简化注册 API 一起使用?

最佳答案

An Android application running on a mobile device registers to receive messages by calling the GoogleCloudMessaging method register(senderID...). This method registers the application for GCM and returns the registration ID. This streamlined approach replaces the previous GCM registration process.

基于此,GCMBaseIntentService 在使用新的注册方式时已过时。它被替换为 GcmBroadcastReceiverGoogleCloudMessaging

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

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

至于 list :

.MyIntentService 是可选的:

An intent service to handle the intents received by the broadcast receiver. Optional.

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

关于android - Android GCM 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16619097/

相关文章:

android - 获取用于 Google Cloud Messaging 的 API key

Android 探查器不显示 fragment 生命周期

android - 来自集成测试的 flutter 位置权限不起作用

ios - 无法为运行 iOS 8+ (APNS) 的设备获取设备 token

Android GCMIntentService onMessage 上下文问题

android - 如何处理错误获取 GCM SenderId 失败?

android - 滑动菜单 - 从右到左

平板电脑中的 Android 操作栏菜单

android - AeroGear PushPlugin 和 cordova android 平台未找到证书路径错误的信任 anchor

ios - 等待一定时间后向用户发送通知