Обратные вызовы firebase_messaging не запускаются на переднем плане. iOS приложение Флаттер - PullRequest
0 голосов
/ 19 марта 2020

Я портирую свое приложение Swift на Flutter и настраиваю FCM с использованием пакета firebase_messaging. При использовании моего приложения Swift, если я отправляю тестовое сообщение с консоли Firebase либо непосредственно на токен, либо широко, и получаю уведомление, доставляемое в системный трей независимо от того, находится ли приложение на переднем плане или в фоновом режиме.

Это не ' это случилось с приложением Flutter. Когда приложение находится в фоновом режиме, я все равно получаю оба уведомления в системном трее, но когда на переднем плане не вызывается ни один из обратных вызовов 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;
      }
    });
  }

1 Ответ

0 голосов
/ 20 марта 2020

Хорошо, я обнаружил, что проблема заключается в самом пакете. При переключении на вилку плагина 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 на самом деле решает проблему несовместимости с другими плагинами, которые необходимо зарегистрировать в

if #available(iOS 10.0, *) {
        UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
    }

как его собственный плагин flutter_local_notification, используемый для отображения локальных уведомлений.

Я надеюсь, что это может помочь другим, пока новая версия плагина выкатывается, так как заставить его работать довольно сложно.

Cheers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...