如果在没有互联网连接的情况下卸载启用了 gcm 的 android 应用程序,如何处理我的 registraion_id 在我的在线数据库服务器中的删除

How to handle the deletion of my registraion_id in my online database server if the gcm enabled android app is uninstalled without internet connection

想到一个问题,我已经在不同的设备上安装了 20 个该应用程序的应用程序实例,并且我决定要在我新购买的设备上安装另一个该应用程序。这在获取通知密钥方面真的是个大问题吧?因为 notificatin_key 成员允许的最大注册 ID 是 20,所以我应该限制我的应用程序实例。

解决方案之一是从设备上卸载单个应用程序实例,并告诉我的在线数据库服务器删除已保存的注册 ID,该注册 ID 类似于已卸载应用程序的注册 ID。通过这种方式,我有权通过检查数据库中的注册 ID 字段是否小于或不等于最大注册 ID 20 来在新购买的设备上安装该应用程序。假设我没有当我在设备上卸载应用程序时互联网连接。如何更新我的在线数据库服务器并为新购买的设备提供另一个 space。

对于那些有经验的此类 android 应用开发者。请分享您对我如何正确处理这种情况的看法。谢谢!

您需要详细阅读Interpreting an error response。如果应用程序已从设备上卸载,您的服务器将收到 Unregistered Device 错误 [错误代码为 NotRegistered]。

因此,如果您遇到此错误,您可以从服务器的数据库中删除该特定设备的条目。


来自 documentation

未注册设备

现有的注册 ID 在许多情况下可能会失效,包括:

  • 如果应用程序通过发出 com.google.android.c2dm.intent.UNREGISTER 意图手动取消注册。
  • If the application is automatically unregistered, which can happen (but is not guaranteed) if the user uninstalls the application.
  • 如果注册ID过期。 Google 可能会决定刷新注册 ID。
  • 如果应用程序已更新,但新版本没有配置接收 com.google.android.c2dm.intent.RECEIVE 意图的广播接收器。

对于所有这些情况,您应该从第 3 方服务器中删除此注册 ID,并停止使用它来发送消息。 当错误代码为 NotRegistered.

时发生