Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter firebase#u消息回调不';在前景时不要开火。iOS应用程序颤振_Flutter_Firebase Cloud Messaging - Fatal编程技术网

Flutter firebase#u消息回调不';在前景时不要开火。iOS应用程序颤振

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

我正在将我的Swift应用程序移植到Flatter,并使用
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
插件,用于显示本地通知

我希望在推出新版本的插件时,这能对其他人有所帮助,因为让它工作起来相当令人沮丧

干杯