IONI C 3: onNotification не срабатывает на переднем плане в IOS? - PullRequest
1 голос
/ 16 июня 2020

Я реализовал pu sh уведомление в ioni c Все работает нормально на android, но в IOS был другой сценарий:

  1. на переднем плане: onNotification не запускается как а android работает отлично.
  2. Фон: pu sh уведомление получено, но после нажатия из уведомления ничего не произошло

app.component.ts

this.fcm.onNotification().subscribe(data => {
if(data.wasTapped){
  console.log(data.wasTapped);
     //redirectPageViaNotificationType for redirect page...
     this.redirectPageViaNotificationType(data);
}  else {
    //Notification was received in foreground. Maybe the user needs to be notified
      // if application open, show
    let confirmAlert = this.alertCtrl.create({
      title: (<any>data).title,
      message: (<any>data).body,
      buttons: [{
        text: 'Ignore',
        role: 'cancel'
      },{
        text: 'View',
        handler: () => {
            //redirectPageViaNotificationType for redirect page...
          this.redirectPageViaNotificationType(data);
        }
      }]
    });
    confirmAlert.present();
}
});

при получении любого уведомления pu sh отображается уведомление, когда мое приложение закрыто или в фоновом режиме, оно не выполняет функцию this.fcm.onNotification (). И я просто отлаживаю эту проблему и заметил это, в моей консоли xcode он показывает:

enter image description here

Пробное решение

Ссылка:

  1. Добавить "content_available": true в полезную нагрузку уведомления, но у меня это не работает.

    https://forum.cometchat.com/t/ionic-push-notification-not-triggered-when-in-foreground-ios/620/8

  2. удалить Плагин ниже:

    npm i cordova-plugin-fcm-with-dependencecy-updated и плагин локального уведомления и добавьте его снова, но у меня это не сработало.

    может ли кто-нибудь сказать мне, почему это происходит и что не так?

Ответы [ 2 ]

0 голосов
/ 26 июня 2020

Если вы хотите обрабатывать запросы, ie не просто обрабатывать некоторые данные в фоновом режиме, как с content-available: '1', вы должны оставить его как content-available: '0'.

Я обрабатываю Pu sh уведомления с PHP и Kreait / Firebase. Тогда для iOS это моя конфигурация:

  $notification = Notification::fromArray([
    'title' => $title,
    'body'  => $message,
  ]);

  $data = MessageData::fromArray([
    'some_key' => $value,
  ]);

  $apnsConfig = ApnsConfig::fromArray([
    'payload' => [
      'aps' => [
        'badge' => 1,
        'content-available' => 0,
        'notId' => UUID::v4()
      ],
    ],
  ]);

  $cloudMessage = CloudMessage::new()
    ->withNotification($notification)
    ->withData($data)
    ->withApnsConfig($apnsConfig);

  $apnsResult = self::$messaging->sendMulticast($cloudMessage, $iosTokens);

Вы можете найти документацию здесь: https://firebase.google.com/docs/cloud-messaging. Для Android я использовал curl, однако тогда была некоторая проблема с реализацией fcm kreaits. Они опубликовали sh новый выпуск, который я хотел проверить, исправлено ли это.

Надеюсь, это поможет.

0 голосов

Я потратил много времени на эту проблему, но мне не удалось заставить плагин fcm стабильно работать в ios. Эта проблема воспроизводилась при закрытии приложения. Я думаю, плагин fcm не очень хорошо работает с ios. Я пытался использовать phonegap-plugin-pu sh, и все работает нормально. Этот плагин может работать с fcm и apns, а уведомление перехватывается, даже когда приложение ios было убито.

...