【发布时间】:2015-09-06 02:21:12
【问题描述】:
场景:我有一个 3rd 方应用服务器、一个 gcm http 连接服务器和一个用于推送通知的 android 应用设置。当用户卸载应用程序时,我可以通过向他们的(不再有效的)注册 ID 发送推送通知并处理从 gcm 连接服务器返回的 "NotRegistered" 错误来从我的第 3 方服务器中删除它们。
但是,当您向订阅“主题”的用户发送推送通知时,这种类似的方法似乎不起作用,因为这里 gcm 连接服务器仅返回带有 "message_id" 的 json 对象。
我的 3rd-party 服务器数据库表中值得注意的列如下:
| gcmRegistrationID (string) | subscribedToNotificationTopic (boolean) |
有谁知道如何识别之前在subscribedToNotificationTopic 列中设置了true,然后卸载该应用的用户?
我对如何解决这个问题有一个想法,但它似乎有些混乱。
-
每隔一段时间,而不是只向某个主题发送推送通知,例如
{ "to" : "/topics/global", ... }向订阅该主题的用户的注册 ID 发送推送通知,例如
{ "registration_ids" : {list of registration ids}, ... }这样我就可以检索和处理任何
"NotRegistered"错误。
然而,这个问题是多播消息有 1000 个用户的限制,所以我必须为每千个用户发送一条消息。
这似乎是一种不好的做法(尤其是在涉及多个主题的情况下),但也许这是唯一的方法?
(额外标签:主题消息传递、发布订阅、注销、谷歌云消息传递)
【问题讨论】:
标签: android push-notification google-cloud-messaging uninstallation publish-subscribe