firebase_messaging 在前台时不会触发回调。 iOS 应用颤动
firebase_messaging callbacks don't fire when in foreground . iOS app Flutter
我正在将我的 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;
}
});
}
好的,我发现问题出在包本身。当切换到插件的 MaikuB 分支时,一切都按预期工作。
# 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
插件,用于显示本地通知。
我希望这可以在推出新版本插件时帮助其他人,因为让它工作非常令人沮丧..
干杯
我正在将我的 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;
}
});
}
好的,我发现问题出在包本身。当切换到插件的 MaikuB 分支时,一切都按预期工作。
# 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
插件,用于显示本地通知。
我希望这可以在推出新版本插件时帮助其他人,因为让它工作非常令人沮丧..
干杯