Flutter:Foreground通知在Firebase消息传递中不起作用

Far*_*ana 10 android push-notification dart flutter firebase-cloud-messaging

我需要使用本地通知在应用程序处于前台时显示Firebase通知,但无法正常工作。

  FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin=new FlutterLocalNotificationsPlugin();

  static  FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
  static StreamController<Map<String, dynamic>> _onMessageStreamController =
  StreamController.broadcast();
  static StreamController<Map<String, dynamic>> _streamController =
  StreamController.broadcast();
  static final Stream<Map<String, dynamic>> onFcmMessage =
      _streamController.stream;

  @override
  void initState() {
    super.initState();

    var android=AndroidInitializationSettings('mipmap/ic_launcher.png');
    var ios=IOSInitializationSettings();
    var platform=new  InitializationSettings(android,ios);
    flutterLocalNotificationsPlugin.initialize(platform);

    firebaseCloudMessaging_Listeners();
  }
Run Code Online (Sandbox Code Playgroud)

这是Firebase代码

 void firebaseCloudMessaging_Listeners() {

if (Platform.isIOS) iOS_Permission();

_firebaseMessaging.getToken().then((token) {
  print("FCM TOKEN--" + token);
});
_firebaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) async {
    print('on message $message');
    showNotification(message);
  },
  onResume: (Map<String, dynamic> message) async {
    print('on resume $message');
  },
  onLaunch: (Map<String, dynamic> message) async {
    print('on launch $message');
  },
);


}
Run Code Online (Sandbox Code Playgroud)

这是showNotification方法

 void showNotification(Map<String, dynamic> msg) async{
    print(msg);
    var android = new AndroidNotificationDetails(
        'my_package', 'my_organization', 'notification_channel', importance: Importance.Max, priority: Priority.High);
    var iOS = new IOSNotificationDetails();
    var platform=new NotificationDetails(android, iOS);
    await flutterLocalNotificationsPlugin.show(
      0,'My title', 'This is my custom Notification', platform,);
  }
Run Code Online (Sandbox Code Playgroud)

和Firebase响应

{通知:{标题:测试标题,正文:测试通知文本},数据:{订单编号:2,click_action:FLUTTER_NOTIFICATION_CLICK,订单名称:farhana}}

Abd*_*yek 8

您可以在 FlutterFire 文档中找到答案 https://firebase.flutter.dev/docs/migration/#messaging

您只需将以下行添加到代码中

    FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(alert: true, badge: true, sound: true);
Run Code Online (Sandbox Code Playgroud)


Sid*_*kar 4

GitHub 存储库上记录了与此相关的软件包的一个活跃问题。Firebase 消息传递和本地通知无法在 iOS 上协同工作,因为您只能注册一个委托来接收通知。

查看: https: //github.com/MaikuB/flutter_local_notifications/issues/111

还有一个活跃的颤振问题: https://github.com/flutter/flutter/issues/22099