android - 在自动更新期间保持应用程序 GCM 注册 ID 有效

标签 android push-notification google-cloud-messaging auto-update

在官方文档和this question , Google 建议重新注册 GCM,因为注册 ID 可能会更改。

它可能发生的一种假设方式是 during update, the all is uninstall and then installed. If a GCM notification is received during that gap, NotRegistered could be returned and the GCM registration ID could be invalidated .

如果 Google Play 自动更新我的应用程序,处理这种情况并重新注册的最有效方法是什么?在像 WhatsApp 这样的应用程序中,除非收到 GCM 通知,否则用户可能永远不会明确启动任何 Activity 。因此,用户基本上是“迷路”的,直到他不小心偶然发现了一个 Activity 。

https://stackoverflow.com/a/14955308/111021提到将包含“Canonical ID”,以便第 3 方服务器可以更新注册 ID。但是在doc没有明确说明涵盖了这种情况(即 GCM 可能会在更新间隙期间将应用程序误认为“已卸载”,在这种情况下,在我看来不会生成规范 ID,我将直接转到 NotRegistered).

“高可用性”应用(如 WhatsApp 或其他消息应用)如何处理此问题?

最佳答案

下面的解决方案呢:

为 Intent 创建一个BroadcastReceiver ACTION_PACKAGE_REPLACED 。当安装新版本的包时,您将收到此 Intent 。获得此 Intent 后,您可以重新注册 GCM 以获得新的注册 ID。

广播操作:已安装应用程序包的新版本,替换之前安装的现有版本。数据包含包的名称。

关于android - 在自动更新期间保持应用程序 GCM 注册 ID 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626922/

相关文章:

java - java中使用Pattern解析数据

android - 将eclipse项目导入android studio 1.4后,出现Gradle插件错误

c# - 使用 ASP.NET 服务器添加 iPhone 推送通知

android - Firebase 可扩展通知在应用程序处于后台时显示图像

iphone - 如何使用苹果推送通知沙箱作为虚拟设备?

android - GCM HTTP 错误 401 : Unauthorized

Android 陀螺仪与加速度计

android - 不同手机的Textview大小不同

android - GCM 更新 7.5 到 8.3.0 致命异常

android - 尝试从 Google Cloud Messaging 消息更改 Google Maps v2 Api 上的标记时出现非法状态异常