Flutter Firebase 订阅多个 Firebase 云消息传递主题

时间:2021-06-13 08:08:04

标签: firebase flutter dart firebase-cloud-messaging

我是 Dart 的相对初学者,现在对于我的 Flutter 应用程序,我不确定如何正确地一次将多个主题订阅到 Firebase Cloud Messaging。我想在我的 Cloud Function 以特定时间间隔通过 FCM 向这些主题发送通知时收到通知。 FlutterFire 文档似乎说 subscribe/unsubscribeToTopic 方法返回期货,但 Dart 中解决多个期货的最佳方法是什么?到目前为止,我已经想到了以下 2 个选项:

方法一

Future<void> subscribeTopicV1(List<int> selectedUsers) async {
    for (var userId in selectedUsers) {
      await messaging.subscribeToTopic('$userId');
    }
}

我的理解是,如果在父级中我调用 subscribeTopicV1 如下所示,这基本上会将所有订阅/取消订阅主题操作从异步变为同步:

...
if (shouldSubscribe) {
   await subscribeTopicV1
}
...
// OR
if (shouldSubscribe) {
   subscribeTopicV1.then( () => {
      ... // do whatever
   })
}

这应该意味着在继续订阅下一个主题之前,我正在等待每个 messaging.subscribeToTopic 返回?

方法二

Future<void> subscribeTopicV2(List<int> selectedUsers) async {
     Future.wait(selectedUsers
         .map((userId) => messaging.subscribeToTopic('$userId')));
}

现在这第二种方法将并行运行所有 messaging.subscribeToTopic 操作,如果我以相同的方式调用 subscribeTopicV2 如下:

...
if (shouldSubscribe) {
   await subscribeTopicV2
}
...
// OR
if (shouldSubscribe) {
   subscribeTopicV2.then( () => {
      ... // do whatever
   })
}

在这第二种方法中,我应该等待 subscribeTopicV2 中的所有期货都解决了吗?我想提一下,我不关心订阅主题的顺序,所以在这种情况下我应该使用方法 2 以获得最佳性能是否公平,因为它允许我并行执行这些异步操作?我找不到任何关于人们如何处理订阅多个主题的文档,因此非常感谢您提供任何见解!

0 个答案:

没有答案