Flutter firebase#u消息回调不';在前景时不要开火。iOS应用程序颤振
我正在将我的Swift应用程序移植到Flatter,并使用Flutter firebase#u消息回调不';在前景时不要开火。iOS应用程序颤振,flutter,firebase-cloud-messaging,Flutter,Firebase Cloud Messaging,我正在将我的Swift应用程序移植到Flatter,并使用firebase\u messaging软件包设置FCM。 使用我的Swift应用程序时,如果我从Firebase控制台直接或广泛地向令牌发送测试消息,并且无论应用程序位于前台还是后台,我都会收到发送到系统托盘的通知 这不会发生在颤振应用程序中。 当应用程序在后台时,我仍然会在系统托盘中收到这两个通知,但在前台时,不会调用onMessage、onLaunch或onResume回调 你能看出我做错了什么吗? 非常感谢 class _MapS
firebase\u messaging
软件包设置FCM。
使用我的Swift应用程序时,如果我从Firebase控制台直接或广泛地向令牌发送测试消息,并且无论应用程序位于前台还是后台,我都会收到发送到系统托盘的通知
这不会发生在颤振应用程序中。
当应用程序在后台时,我仍然会在系统托盘中收到这两个通知,但在前台时,不会调用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;
}
});
}
class\u映射屏幕状态扩展状态{
最终FirebaseMessaging_FirebaseMessaging=FirebaseMessaging();
字符串标记;
字符串_启动消息;
@凌驾
void initState(){
super.initState();
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(声音:true、徽章:true、警报:true));
_firebaseMessaging.onissettings已注册
.listen((IONotificationSettings){
打印(“已注册设置:$Settings”);
});
_firebaseMessaging.configure(
onMessage:(映射消息)异步{
打印('on message$message');
},
onResume:(映射消息)异步{
打印('在简历上$message');
},
onLaunch:(映射消息)异步{
打印('on launch$message');
},
);
_firebaseMessaging.getToken().then((令牌){
打印('token:$token');
如果(已安装){
设置状态(){
_令牌=令牌;
});
}否则{
_令牌=令牌;
}
});
}
好的,我发现问题出在软件包本身。当切换到插件的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的叉子实际上解决了与其他插件不兼容,需要注册到
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}
作为他自己的flatter\u local\u notification
插件,用于显示本地通知
我希望在推出新版本的插件时,这能对其他人有所帮助,因为让它工作起来相当令人沮丧
干杯