何时使用Firebase通知注册主题



我正在使用Firebase的FCM进行应用通知。从用户启动应用程序的那一刻起,需要订阅某些主题。

到目前为止,我已经处理了我们自己的服务器上的"主题"和各种指标,但是当我们将逻辑零件移至其适当的位置以减少服务器上的负载时,需要将其移至Firebase本身。<<<<<<<<<<

我们想处理事情有所不同。用户将能够订阅并从某些通知组中订阅/退订/从某些通知组中订阅,但是FCM的文档没有提及哪个时间,哪个回调是处理此问题的合适地方。

流将如下:

  1. 用户安装应用程序
  2. 用户启动应用
  3. 应用程序更新缓存的数据(以较大间隔更改的信息,例如每3-6个月一次(
  4. 应用程序从Google帐户中删除同步数据,包括主题列表
  5. 应用通知的应用程序寄存器设备
  6. 应用程序将用户订阅"所有"主题(在此处注册了所有想要接收通知的用户。仅当用户在设置中取消选中"发送我的通知"选项时,取消订阅才有可能(
  7. (
  8. 应用程序订阅步骤4中同步的主题

什么不清楚在哪里放置步骤6和7。我是否将其放入FirebaseInstanceIdService的实现,Android上的OnTokenRefresh以及iOS上的Messaging.SharedInstance.ConnectInstanceId.Notifications.ObserveTokenRefresh中?FCM代币更改发生时,我需要重新注册到主题吗?

该应用程序是用Xamarin编写的,因此我们使用FCM用于iOS和Android。

在其中放置代码以订阅令牌完全取决于您。通常,它放置在应用程序的初始活动上。这样可以确保用户将订阅该某些主题。

但是,在用例中,您可以制作一种方法,以检查应用程序的通知设置是否为 ticked ,如果是,请订阅令牌(如果不是(,请取消订阅。然后只需在您的初始活动中调用此方法。

关于" 发生FCM代币更改发生?,我需要重新注册到主题?",您不必这样做。@diegogiorgini参考此答案:

如果令牌"刷新",则维护主题订阅。

应将其寄存到主题的寄存器应放在视图中(Android中的Activity类(。这取决于您需要的地方。可以通过使用此代码

来实现
FirebaseMessaging.Instance.SubscribeToTopic("promotion");

请注意,当您订阅不存在的主题时,该主题将在服务器中创建。但是,该创建需要很长时间,因此主题不可立即出现在您的Firebase控制台中。

稍后,当您要退订时(可能是在注销后(,只需在视图中调用此内容。

FirebaseMessaging.Instance.UnsubscribeFromTopic("promotion");

希望这可以有所帮助。

最新更新