FCM在iOS上使用Flutter有什么要求



我正在通过Flutter让Firebase云消息与iOS协同工作。我走了这里、这里、这里的台阶,运气不好。

我没有使用模拟器,我使用的是iOS 11.4.1的iPhone 8+。我已经在Firebase控制台中安装了所有三个APN证书。我已致电FirebaseMessaging.requestNotificationPermissions();并接受了对话。我正在通过FCM控制台发送消息进行测试。我的手机已通过Firebase认证(匿名认证(。

在应用程序打开或关闭时,我不会收到消息。

如果有人对我可能缺少的东西有任何想法,请提供帮助。我希望能够为其他来到Flutter/iOS/FCM的人制作一个牛叉点列表,让他们在没有错误的情况下遵循。

好吧,这就是我学到的。真希望我把这一切都写下来,当我开始工作的时候。但它应该对某人有帮助。

  1. 确保Firebase已在Flutter项目中设置并运行
  2. 将firebase_messaging添加到pubspec.yaml
  3. flutter packages get
  4. 创建/下载您的APNS密钥并将其上传到Firebase控制台
  5. 在Apple Dev网站上创建/下载您的配置文件,然后双击进行安装
  6. 使用下面的重要片段

  7. 通过Firebase控制台向所有应用程序用户或您的messagingToken发送消息。

如果你有一个运行应用程序的物理设备,并且你按照这些步骤操作,你应该会收到后台通知。你不会在前台收到它们。如果有人想办法把它们放在前台,请告诉我!

片段

import 'package:firebase_messaging/firebase_messaging.dart';
FirebaseMessaging messaging = FirebaseMessaging();
messaging.configure(); // NECESSARY
messagingToken = await fb.messaging.getToken();
messaging.subscribeToTopic("general");
// this will launch a modal asking if you want to receive notifications
messaging.requestNotificationPermissions();

为了能够向iOS应用程序发送推送通知,您似乎错过了一些配置步骤。也许你能做的最好的事情就是发布更多关于你的配置环境的信息。

然而,对于您给我们的描述,这可能是关于以下选项之一的问题:

  • 您需要配置正确的环境来发送推送通知。如果你直接从Xcode将应用程序安装到设备上,你需要使用Sandbox环境,但如果你的应用程序是从AppStore或Testflight安装的,你需要用到Production。这是因为环境(沙盒和生产(都引用了不同的url来发送推送通知
  • 不存储与您的应用程序和当前设备之间的特定关系相关的deviceId。请记住,当您发送推送通知时,您需要告知哪些设备将收到该通知

请让我知道这是否回答了您的问题,或者我遗漏了一些

编辑

为了处理前台通知,您需要添加didReceiveRemoteNotification回调,以便获得titlemessageJSON结构的所有自定义参数。

在这种特殊情况下,插件文档指出,根据应用程序的状态,您需要三个不同的回调。

  • 如果应用程序位于FOREGROUND,则需要使用onMessage回调
  • 如果应用程序处于后台,则需要使用onResume回调
  • 如果应用程序已终止,则需要使用onLaunch回调

然而,这只会使参数信息可用,您仍然需要以某种自定义方式向用户显示它们(例如,如果您在不同的对话中,WhatsApp或Facebook Messenger可以在视图顶部以独立气泡的形式向您显示新的聊天消息,或者如果此新消息属于当前聊天,则会将其添加到对话的底部(。

相关内容

  • 没有找到相关文章

最新更新