【问题标题】:Restricting GCM/FCM notifications through unregister通过注销限制 GCM/FCM 通知
【发布时间】:2016-11-14 13:12:12
【问题描述】:

有没有办法限制 Firebase 推送通知注册?不找话题。假设我有一个登录功能。我希望登录用户订阅推送通知。然后可以将令牌发送到服务器并存储。

用户注销的同时,用户也要注销。

那么目前有可用的机制吗?我浏览了 Firebase API 文档,但找不到任何内容。

只是想知道我是否遗漏了什么。

【问题讨论】:

标签: android firebase google-cloud-messaging firebase-cloud-messaging


【解决方案1】:

关于何时使用deleteToken()deleteInstanceId() 的区别,请参阅此answer


即使是 GCM,也不建议在注销时取消注册应用实例(设备/用户)。根据GCM docs

出于以下原因,开发人员不应取消注册客户端应用作为注销或切换用户的机制:

  • 注册令牌未与特定登录用户关联。如果客户端应用取消注册然后重新注册,应用可以接收相同的注册令牌或不同的注册令牌。

  • 取消注册和重新注册可能需要最多五分钟才能传播。在此期间,消息可能会由于未注册状态而被拒绝,并且消息可能会发送给错误的用户。

如果您仍想继续,您仍然可以参考上述相同的文档。

注销和退订

客户端应用可以使用三种方法来停止从应用服务器接收消息和/或主题订阅:

  • InstanceID deleteToken(),受众设置为应用服务器的发件人 ID,范围设置为 GCM。这会阻止来自特定应用服务器的消息(包括主题消息)

  • InstanceID deleteID()。这会停止来自所有应用服务器的所有先前注册和主题订阅的消息

  • GCMPubSub 取消订阅()。这会停止来自应用服务器特定主题的主题消息

对于 FCM,它应该是 FirebaseInstanceId

【讨论】:

  • 是的,但确实如此。主题与分组有关。例如。运动的。因此,使用主题的目的是与一组用户进行交流。那不是我想要的。我想管理个人用户。如果我想通过令牌与单个用户进行通信是可能的。但是假设用户已注销。但仍然应该无法沟通。
  • @HashanSenevirante 你的意思是完全注销用户吗?
  • 我搞混了这些条款。正确的术语是设备注册。这正是我想知道的。非常感谢 AL。
  • deleteToken 不起作用,至少对于 FCM 而言(尽管使用了这种方法,消息仍然不断出现)。 deleteId 不存在了。 unsubscribe 仅适用于主题,这可能并不总是一个解决方案(它不适合我)。有什么我可能会丢失的吗?看看我的问题:stackoverflow.com/questions/43193215/…
  • 也从那里:为了确保消息到达目标用户:应用服务器可以维护当前用户和注册令牌之间的映射。然后,客户端应用程序可以检查以确保它收到的消息与登录用户匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 2015-09-24
  • 2016-12-24
  • 2019-08-26
  • 2016-11-25
相关资源
最近更新 更多