首页 文章

注销/登录后的Google FCM主题订阅

提问于
浏览
0

当用户X订阅许多不同的主题时,例如“他的小组上的新馈送”或“我写的问题的新答案”,以及稍后在应用中注销(导致令牌ID刷新)和日志在一段时间后,使用新的FCM-Token,所有订阅都将丢失 .

Edit: 在我的应用程序中,Token在这种情况下刷新,另一个用户登录此设备 . Example :如果应用程序已卸载并再次安装,或者用户在另一台设备中登录,则会丢失有关其过去的所有数据,我需要重新订阅所有相关主题

恢复特定用户的所有主题订阅的最佳做法是什么 . 我想,要保存用户在数据库中的每个订阅(mongodb在单独的集合中或redis作为列表与lua-script)并对所有订阅进行数据库检查,并在登录后对此fcm-token执行新的订阅 . 我用于User / Groups管理MongoDB,但也使用redis .

此外,我希望用户可以订阅/取消订阅组,问题等等 . (并查看他是否订阅了它) .

2 回答

  • 0

    如果用户注销,则不会刷新令牌,因为身份验证和注销/不使用身份验证都很重要 .

    它在4种情况下更新:

    应用程序删除实例ID应用程序在新设备上还原用户卸载/重新安装应用程序用户清除应用程序数据

    关于这个的更多信息:https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceIdService#onTokenRefresh()

    因此,假设用户订阅了一个名为 weather 的主题,那么他将拥有与他相关的令牌ID . 如果你使用 onTokenRefresh() 并在该方法中添加订阅,那么当他重新安装应用程序时,他不需要再次订阅 .

    此外,我希望用户可以订阅/取消订阅组,问题等 . (并查看他是否订阅了它) .

    用户可以轻松订阅这样做:

    FirebaseMessaging.getInstance().subscribeToTopic("weather");
    

    退订:

    FirebaseMessaging.getInstance().unsubscribeFromTopic("weather");
    

    您可以像这样,用户单击按钮订阅,然后他将订阅特定主题,另一个按钮取消订阅,他将被取消订阅并且不再接收该主题的通知(直到他再次订阅)

  • 1

    我用Redis和LUA-Scripting结合列表解决了这个问题,这保证了我的快速访问以及用户可以查看每个组/新闻源(如果他订阅或不订阅)(如Facebook) . 当用户登录到新设备时,他将重新订阅他所有的主题 .

相关问题