Как получить Push-уведомление на iOS, работающем с Firebase и Flutter? - PullRequest
2 голосов
/ 07 мая 2019

Я пробовал много разных уроков, следуя, например, этому https://medium.com/flutterpub/enabling-firebase-cloud-messaging-push-notifications-with-flutter-39b08f2ed723

Но я не могу получать Push-уведомления на моем iPhone.Он отлично работает на Android.

Я использую firebase_messaging: ^ 4.0.0 + 4 и flutter_local_notifications: ^ 0.6.1

Проблема в том, что ни один из слушателей (onMessage, onResume или onLaunch) не вызывается в iOS, хотятокен получен с помощью getToken ()

Нет сообщения об ошибке.Я не могу найти причину такого поведения.Я был бы рад, если бы кто-то мог помочь мне.

Спасибо.

_firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        print("IM HERE ON MESSAGE");
        print('on message $message');


        String message_as_String = json.encode(message);
        print(message_as_String);
        String title = "test";
        String body = "test";
        String screen = "test";


        var androidPlatformChannelSpecifics = new AndroidNotificationDetails(
            'your channel id', 'your channel name', 'your channel description',
            playSound: false, importance: Importance.Max, priority: Priority.High);
        var iOSPlatformChannelSpecifics =
        new IOSNotificationDetails(presentSound: false);
        var platformChannelSpecifics = new NotificationDetails(
            androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
        await flutterLocalNotificationsPlugin.show(
          0,
          body,
          title,
          platformChannelSpecifics,
          payload: screen,
        );
      },
      onResume: (Map<String, dynamic> message) async {
        print('on resume $message');
        String screen = message["screen"];

      },
      onLaunch: (Map<String, dynamic> message) async {
        print('on launch $message');
      },
    );
    if (Platform.isIOS) iOS_Permission();
    _firebaseMessaging.getToken().then((token){
      print(token);
    });
  }

1 Ответ

0 голосов
/ 07 мая 2019

Документация для flutter_local_notifications гласит следующее:

ПРИМЕЧАНИЕ: этот плагин регистрирует себя как делегат для обработки входящих уведомлений и действий.Это может вызвать проблемы, если вы используете другие плагины для push-уведомлений (например, firebase_messaging), поскольку они, скорее всего, будут делать то же самое, и можно зарегистрировать только одного делегата.

Несколько вопросов:

  • Почему вы хотите использовать оба пакета?
  • Вы включили Remote notifications в Background Modes под вашим Target в Xcode?
  • Создали ли высертификат для уведомлений на iOS?(APNS: служба push-уведомлений Apple ( ссылка )

Дайте мне знать, как это получается для вас :)

...