FCM在iOS上与Flutter一起使用有什么要求?

时间:2018-07-22 16:50:01

标签: ios firebase firebase-cloud-messaging flutter

我正在努力通过Flutter使Firebase Cloud Messaging与iOS一起使用。我没有遵循hereherehere所列出的步骤。

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

在打开或关闭应用程序的情况下,我不会收到消息。

如果有人对我可能会缺少的东西有任何想法,请提供帮助。我希望能够为落入Flutter / iOS / FCM的其他人创建一个项目符号列表,以确保他们不会出现错误。

2 个答案:

答案 0 :(得分:2)

听起来像您缺少一些配置步骤,以便能够将推送通知发送到您的iOS应用。也许您能做的最好的就是发布有关您的配置环境的更多信息。

但是,对于您提供给我们的描述,可能与以下选项之一有关:

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

请告诉我这是否回答了您的问题,或者我有一些遗漏

编辑

要处理前台通知,您需要添加didReceiveRemoteNotification回调以获取titlemessage JSON结构的所有自定义参数。

在这种情况下,插件文档指出您需要三个不同的回调,具体取决于应用程序的状态。

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

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

答案 1 :(得分:1)

好的,这就是我学到的。希望我能在工作时将其全部写下来。但这对某人应该有所帮助。

  1. 确保在您的Flutter项目中设置了Firebase并使其正常工作。
  2. firebase_messaging添加到pubspec.yaml
  3. flutter packages get
  4. 创建/下载您的APNS密钥并将其上传到Firebase控制台
  5. 在Apple Dev网站上创建/下载您的Provisioning Profile,然后双击进行安装。
  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();