我正在使用 Firebase 的 FCM 为应用推送通知。从用户启动应用程序的那一刻起,就需要订阅某些主题。
到目前为止,我已经在我们自己的服务器上处理了“主题”和各种指标,但是由于我们正在将逻辑部分移动到适当的位置以减轻我们服务器上的负载,因此需要将其移动到 Firebase 本身。
我们希望以不同的方式处理事情。用户将能够订阅和取消订阅某些通知组,但是 FCM 的文档没有提到哪个时间、哪个回调是处理这个的适当位置。
流程如下:
- 用户安装应用
- 用户启动应用
- 应用更新缓存数据(以较大间隔更改的信息,例如每 3-6 个月)
- 应用从 Google 帐户中提取同步数据,包括主题列表
- 应用为推送通知注册设备
- 应用程序为用户订阅“所有”主题(所有想要接收通用通知的用户都在此处注册。只有当用户取消选中设置中的“向我发送通知”选项时才能取消订阅)
- 应用订阅第 4 步中同步的主题
不清楚的是将第 6 步和第 7 步放在哪里。我是否将其放入 FirebaseInstanceIdService
的实现中,Android 上的 OnTokenRefresh
中,以及 Messaging.SharedInstance.Connect
或 InstanceId.Notifications.ObserveTokenRefresh
在 iOS 上?当 FCM token 发生变化时,我是否需要重新注册主题?
该应用是用 Xamarin 编写的,因此我们对 iOS 和 Android 使用 FCM。
最佳答案
将用于订阅 token 的代码放在哪里完全取决于您。但通常情况下,它位于应用程序的初始 Activity 中。这可确保用户订阅该特定主题。
但是在您的用例中,您可以创建一种方法来检查您的应用程序的通知设置是否被勾选,如果是,则订阅 token ,如果没有,则取消订阅。然后只需在您的初始 Activity 中调用此方法即可。
关于“发生 FCM token 更改时我是否需要重新注册主题?”,您不必这样做。引用这个answer by @DiegoGiorgini :
If the token is "refreshed" the topic subscriptions are maintained.
关于android - 何时使用 Firebase 通知注册主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43538701/