Метод Fluttter onSelectNotification не показывает полезную нагрузку при закрытии приложения

Я использую пакет flutterlocalnotifications и FCM для отправки уведомлений своим пользователям. Все работает отлично. Я могу показывать уведомления своим пользователям, когда мое приложение находится в фоновом режиме, на переднем плане или закрыто. Я могу достичь значения полезной нагрузки на переднем и заднем плане, но когда приложение убито, я больше не могу достичь полезной нагрузки. Я тестирую в журнале каталогов, но в onSelectNotification нет печати. Как добраться до этой полезной нагрузки? Это мой класс обработчика уведомлений

      import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

AndroidNotificationChannel channel = AndroidNotificationChannel(
  'high_importance_channel', // id
  'High Importance Notifications', // title
  'This channel is used for important notifications.', // description
  importance: Importance.high,
);
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
    FlutterLocalNotificationsPlugin();

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  // await Firebase.initializeApp();
  //Bildirim geldiği anda datayı elde ettiğimiz alan
  final dynamic data = message.data;
  print('Data in background : ${data.toString()}');
  NotificationHandler.showNotification(data);
}

class NotificationHandler {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
  static final NotificationHandler _singleton = NotificationHandler._internal();
  factory NotificationHandler() {
    return _singleton;
  }
  NotificationHandler._internal();
  BuildContext myContext;

  initializeFCMNotifications(BuildContext context) async {
    await _firebaseMessaging.setForegroundNotificationPresentationOptions(
        alert: true, badge: true, sound: true);
    var initializationSettingsAndroid =
        AndroidInitializationSettings('app_icon');
    var initializationSettingsIOS = IOSInitializationSettings(
        onDidReceiveLocalNotification: onDidReceiveLocalNotification);
    var initializationSettings = InitializationSettings(
        android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
    await flutterLocalNotificationsPlugin.initialize(initializationSettings,
        onSelectNotification: onSelectNotification);
    await _firebaseMessaging.subscribeToTopic("all");

    await FirebaseMessaging.instance
        .getInitialMessage()
        .then((RemoteMessage message) {
      if (message != null) {
        print('initialmessage tetiklendi : ' + message.data.toString());
      }
    });

    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      var notification = message.notification;
      var android = message.notification?.android;

      print('ONMESSAGE ÇALIŞTI');
      print('onmessage tetiklendi data : ' +
          message.data['message'] +
          ' title ' +
          message.data['title']);
      showNotification(message.data);
    });
    FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
      print('Onmessageopened  : ' + message.data.toString());
    });
  }

  static void showNotification(Map<String, dynamic> data) async {
    const androidPlatformChannelSpecifics = AndroidNotificationDetails(
        '1234', 'Yeni Mesaj', 'your channel description',
        importance: Importance.max, priority: Priority.high, ticker: 'ticker');
    const IOSPlatformChannelSpecifics = IOSNotificationDetails();
    const platformChannelSpecifics = NotificationDetails(
        android: androidPlatformChannelSpecifics,
        iOS: IOSPlatformChannelSpecifics);

    await flutterLocalNotificationsPlugin.show(
        0, data['title'], data['message'], platformChannelSpecifics,
        payload: 'The value when notification tapped');
  }

  Future onSelectNotification(String payload) async {
    if (payload != null) {
      debugPrint('notification payload : $payload');
    }
  }

  Future onDidReceiveLocalNotification(
      int id, String title, String body, String payload) {}
} 

и это версии пакетов, которые я использую

      
  firebase_messaging: ^9.1.1
  flutter_local_notifications: ^5.0.0+1

0 ответов

Другие вопросы по тегам