我正在将Swift应用程序移植到Flutter,并使用firebase_messaging
软件包设置FCM。
使用我的Swift应用程序时,如果我从Firebase控制台直接将测试消息发送到令牌或广泛发送,无论应用程序是在前台还是在后台,我都会收到通知发送到系统托盘。
Flutter应用程序不会发生这种情况。
当App在后台运行时,我仍会在系统任务栏中同时收到这两个通知,但是在前台运行时,不会调用onMessage
,onLaunch
或onResume
回调。
您能发现我在做什么吗? 非常感谢。
class _MapScreenState extends State<MapScreen> {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
String _token;
String _launchMessage;
@override
void initState() {
super.initState();
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print('on message $message');
},
onResume: (Map<String, dynamic> message) async {
print('on resume $message');
},
onLaunch: (Map<String, dynamic> message) async {
print('on launch $message');
},
);
_firebaseMessaging.getToken().then((token) {
print('token: $token');
if (mounted) {
setState(() {
_token = token;
});
} else {
_token = token;
}
});
}
答案 0 :(得分:0)
好的,我发现问题出在包装本身。当切换到插件的MaikuB fork时,一切都按预期工作。
# firebase_messaging: 6.0.9 # doesn't work
firebase_messaging: # works properly
git:
url: https://github.com/MaikuB/flutterfire.git
path: packages/firebase_messaging
他告诉我,该文件已合并到官方仓库中,这是由于更新了保存此文件的插件。 MaikuB的fork实际上解决了与其他需要注册到
的插件的不兼容问题if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}
作为他自己的flutter_local_notification
插件,用于显示本地通知。
我希望这在新版本的插件推出时能对其他人有所帮助,因为使其工作相当令人沮丧。
欢呼