我正在努力通过Flutter使Firebase Cloud Messaging与iOS一起使用。我没有遵循here,here和here所列出的步骤。
我没有使用模拟器,而是在装有iOS 11.4.1的iPhone 8+上。我已经在Firebase控制台中安装了所有三个APN证书。我已经致电FirebaseMessaging.requestNotificationPermissions();
并接受了对话框。我正在通过FCM控制台发送消息进行测试。我的手机通过Firebase进行了身份验证(匿名身份验证)。
在打开或关闭应用程序的情况下,我不会收到消息。
如果有人对我可能会缺少的东西有任何想法,请提供帮助。我希望能够为落入Flutter / iOS / FCM的其他人创建一个项目符号列表,以确保他们不会出现错误。
答案 0 :(得分:2)
听起来像您缺少一些配置步骤,以便能够将推送通知发送到您的iOS应用。也许您能做的最好的就是发布有关您的配置环境的更多信息。
但是,对于您提供给我们的描述,可能与以下选项之一有关:
Sandbox
环境,但是如果从AppStore或Testflight安装了应用程序,则需要使用Production
。这是因为环境(沙盒和生产环境)都引用不同的URL来发送推送通知。deviceId
未存储。请记住,当您发送推送通知时,您需要指定哪些设备将接收该通知。 请告诉我这是否回答了您的问题,或者我有一些遗漏
要处理前台通知,您需要添加didReceiveRemoteNotification
回调以获取title
,message
JSON结构的所有自定义参数。
在这种情况下,插件文档指出您需要三个不同的回调,具体取决于应用程序的状态。
onMessage
回调onResume
回调onLaunch
回调但是,这仅使参数信息可用,您仍然需要以某种自定义方式向用户显示它们(例如,如果您作为独立对话对象处于不同的对话中,则WhatsApp或Facebook Messenger可以向您显示新的聊天消息视图顶部的气泡),或者如果此新消息属于当前聊天,则会将其添加到对话的底部)。
答案 1 :(得分:1)
好的,这就是我学到的。希望我能在工作时将其全部写下来。但这对某人应该有所帮助。
pubspec.yaml
flutter packages get
使用下面的摘录中的重要内容
通过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();