Android-GCM:如何照顾已注销的用户?

Android-GCM:如何照顾已注销的用户?,第1张

概述在我的应用程序中,一旦我注册了一个设备,它就会被存储为持久数据,以便检查设备是否已经注册.在服务器端,我将它们与user_id一起存储在数据库中,user_id是用户的唯一ID. [user_id] [gcm_registration_id] 现在我无法解决这个案子:如果用户注销:>必须清除存储在SharedPreferences中的registr

在我的应用程序中,一旦我注册了一个设备,它就会被存储为持久数据,以便检查设备是否已经注册.

在服务器端,我将它们与user_ID一起存储在数据库中,user_ID是用户的唯一ID.

[user_ID] [gcm_registration_ID]

现在我无法解决这个案子:

如果用户注销:

>必须清除存储在SharedPreferences中的registration_ID,因为另一个用户可能会在下次启动应用程序时登录.
>此外,我必须从我的数据库中删除与registration_ID相对应的行,因为该设备(当前没有登录用户)不得再接收任何通知.

问题是我的数据库使用canonical_IDs更新或者说我在调用时得到的最新registration_IDs

https://android.googleapis.com/gcm/send

因此,我有可能找不到要删除的已注销用户的旧registration_ID,这仍然允许向未登录的用户发送通知.

此外,我无法删除与我的数据库匹配user_ID的行,因为用户可能只从1个设备注销,而且他/她仍然登录的设备较少.

我如何知道对于此特定用户和设备,注册ID是否已更改?

我应该将所有旧的注册ID及其相应的canonical_ID存储在我的数据库中吗?

最佳答案您有两种选择:

>正如评论中所建议的那样 – 保留在数据库中注销的用户的注册ID,但用一个标志来标记它是一个已注销的用户.您的服务器不会向标记为已注销的注册ID发送通知.
>当用户从设备上的应用程序注销时,该设备上的应用程序将从GCM取消注册,并使用用户ID和注册ID向您的服务器发送注销请求.服务器将从DB中删除该user-ID / registration-ID组合.即使由于某种原因,您的服务器包含该设备的较新注册ID(导致删除尝试失败),您也无法向具有该注册ID的设备发送通知,因为该应用程序从GCM取消注册该设备服务.但是这种情况不太可能发生,因为每当GCM更改给定设备上给定应用程序的注册ID时,都会将该注册ID发送到应用程序,并且应用程序应该发送到您的服务器.只有在未执行此 *** 作的情况下,才会导致服务器发送带有旧注册ID的通知并在响应中获取新的规范注册ID. 总结

以上是内存溢出为你收集整理的Android-GCM:如何照顾已注销的用户?全部内容,希望文章能够帮你解决Android-GCM:如何照顾已注销的用户?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存