GCM 推送通知的依赖项

Posted

技术标签:

【中文标题】GCM 推送通知的依赖项【英文标题】:Dependencies for GCM Push Notification 【发布时间】:2013-10-24 05:11:40 【问题描述】:

我一直在为即将到来的项目开发 GCM 推送通知,但我在其实现方面遇到了一些困惑。我关注了以下链接:

    http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/ http://developer.android.com/google/gcm/client.html

我最终得到的实现在模拟器上工作得很好(不是在所有模拟器上)。这是我的注册实现的link。

    它适用于在平台 4.2.2 上运行的模拟器 它不适用于在平台 2.3.3 上运行的模拟器

到目前为止,我的经验告诉我,在客户端,必须确保以下事项才能正确启用 GCM:

    已安装 Google Play 服务 设备已与 Google 帐户同步。

我说的对吗?

所以我有以下问题要问:

    在实施 GCM 时我应该担心哪些客户端依赖项?我应该在我的代码中检查什么? 当我取消注释上述代码中从 110 到 114 的行以检查播放服务时,我收到以下错误日志 http://pastebin.com/C2BJkiyt 。但它仍然允许我注册。怎么了? 当我在装有 Android 2.3.6 的真实设备上运行工作代码(在模拟器上工作)时,它不起作用。它也不适用于具有 ICS 的设备。

感谢您的时间。

【问题讨论】:

对于您的错误,您正在尝试在不关闭警报对话框的情况下开始活动。这是内存窗口泄漏的错误。 在 2.3.3 平台上运行的模拟器已与 google 帐户同步。 您需要查看客户端是否注册了Google play账号?移动端是否安装了谷歌播放服务? @AnAndroid 我编辑了我的问题,我不确定客户端是否需要安装游戏帐户和服务。关于您之前的评论,我该如何防止开始活动? @URAndroid 对不起,我没听懂你说的。模拟器未与谷歌帐户同步。即使我与谷歌帐户同步,它仍然无法正常工作,当我点击注册按钮时,它会将我导航到 settings->account 中的帐户设置选项。 【参考方案1】:

您正在使用已弃用的库方法GCMRegistrar.register 注册到 GCM。这仍然可以工作,但需要在 4.0.4 之前的 Android 设备上使用已登录的 Google 帐户。

Google 鼓励您停止使用已弃用的库,而改用 GoogleCloudMessaging 类的 register 方法,即使在较旧的 Android 版本中也不需要 Google 帐户。示例见their GCM Demo。

仅当您切换到新的注册方法时,检查播放服务的代码才相关。

至于为什么不推荐使用的注册方法在某些设备上对您不起作用,您必须包含 logcat 以获得帮助。

【讨论】:

感谢您的意见。我正在尝试您提供的演示。所以在这种新方法中,客户端设备不必同步 Google 帐户,对吗?我应该研究的任何其他问题/依赖关系? @Pro.metal 好吧,如果您还没有这样做,您必须设置 Google Play Services SDK。你可以阅读它here。而且您不必同步 Google 帐户是正确的。 我已经实现了 Google Play 服务库问题,但遇到了一些麻烦。我想我已经解决了这个问题,但我仍然遇到错误。这是我的log report。这是我的code。 显然我在使用新实现时遇到了问题。所以我坚持使用旧的实现。因此,如果此实施必须同步 google 帐户,我应该什么时候检查呢?当用户想要在我的 GCM 中注册时,我应该如何检查此问题?

以上是关于GCM 推送通知的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Android oreo - 推送通知崩溃

根据 OneSignal 的用户数据库直接发送 Web 推送 (Chrome - GCM/FCM) 通知

如何在推送通知 (GCM) android 中发送图像?

为啥 GCM 推送通知会重复?

发送少量通知后未从 GCM 收到推送通知

限制发送推送通知(防止垃圾邮件) - GCM