我已使用this实现了Flutter的Firebase Cloud Messaging。所有事情在Android上都可以正常运行,但是iOS推送通知仅在应用程序处于前台时显示。
请帮助我在后台显示通知应用并终止。
这些是我到目前为止所做的步骤
扑朔迷离
FirebaseMessaging firebaseMessaging = new FirebaseMessaging();
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
new FlutterLocalNotificationsPlugin();
@override
void initState() {
super.initState();
var android = new
AndroidInitializationSettings('mipmap/ic_launcher');
var ios = new IOSInitializationSettings();
var platform = new InitializationSettings(android, ios);
flutterLocalNotificationsPlugin.initialize(platform);
firebaseMessaging.configure(
onLaunch: (Map<String, dynamic> msg) async{
print(" onLaunch called ${(msg)}");
},
onResume: (Map<String, dynamic> msg) async{
print(" onResume called ${(msg)}");
},
onMessage: (Map<String, dynamic> msg) async{
showNotification(msg);
print(" onMessage called ${(msg)}");
},
);
firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, alert: true, badge:
true));
firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings setting) {
print('IOS Setting Registed');
});
firebaseMessaging.getToken().then((token) {
update(token);
});
getCashedInfo();
}
showNotification(Map<String, dynamic> msg) async {
var android = new AndroidNotificationDetails(
'sdffds dsffds',
"CHANNLE NAME",
"channelDescription",
);
var iOS = new IOSNotificationDetails();
var platform = new NotificationDetails(android, iOS);
await flutterLocalNotificationsPlugin.show(
0, "This is title", "this is demo", platform);
}
update(String token) {
print(token);
}
在我添加的Xcode中
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as?
UNUserNotificationCenterDelegate
}
答案 0 :(得分:0)
发布此问题后,以前不支持在 iOS 后台处理消息的功能。但是在此 GitHub post 中提到了一些解决方法。
<块引用>使用通知服务扩展是一种方法,是的。
Flutter 是一个优秀的框架,它允许构建和发布漂亮的 UI 速度异常。然而,这是否意味着它提供了我们的一切 想要(从我们的角度来看)?不。这是否意味着我们有 drop Flutter 并使用 SwiftUI(越野车)或故事板?号
我们决定在 UI 中使用 Flutter 并且我们正在处理 除了推送通知之外的所有业务逻辑 以及其他一些小功能 - 这就是您的优势 自己动手。
实施通知服务扩展并使其与 Flutter 是几个小时的事情,考虑到有多少失败 考虑到入门级,所以有点有趣但并不令人震惊。
我们确实使用了具有通知内容的通知服务扩展 将更高级的通知延长几个月,但最后我们 放下它并移动到 PushKit(显然带有 CallKit)并滚动我们的 自己的通知演示者逻辑导致我们放弃了两者 通知服务和内容扩展。
我对那些需要添加推送通知支持的人的建议 Flutter - 在本地解决它,你以后会感谢自己。
<块引用>如何使用 NotificationServiceExtension(本机代码)与 firebase_messaging?
在同一个 GitHub 帖子中,特别是在 2020 年 8 月 4 日的 this thread 中。有人提到现在支持此功能。
<块引用>大家好,当前的开发版本现已支持此功能,以及 macOS 平台也支持登陆(请参阅 migration guide doc 以获取完整的 更改日志以及如何升级)。
有关试用此开发版本的讨论/反馈,请参阅 #4023 - 希望得到反馈。