(Ionic) handleNotificationReceived не вызывается, если приложение убито

Я работаю над ионным приложением и использую onesignal для push-уведомлений.

Проблема, с которой я столкнулся, заключается в том, что handleNotifiactionRecieved() не срабатывает при получении push-уведомления, когда приложение не убито (которое удалено из последних приложений). Хотя он работает, как и ожидалось, когда приложение работает, но в фоновом режиме (не в фокусе).

код установки примерно такой:

if (this.platform.is('cordova')) {
        this.oneSignal.startInit('APP_ID');
        this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.None);
        this.openOneSignalMessage();
        this.oneSignal.endInit();
      }

мой код примерно такой:

openOneSignalMessage() {
this.oneSignal.handleNotificationReceived().subscribe((data) => {
      this.MsgBody = data.payload.body
      console.log('newMessageOneSignal MsgBody', this.MsgBody);
 });
}

фактический результат: handleNotificationReceived() не вызывается, когда приложение не запущено, то есть убито.

ожидаемый результат: handleNotificationReceived() следует вызывать каждый раз, когда приходит push-уведомление, даже если приложение не открыто.

Как запускать метод каждый раз?

Заранее спасибо.


person Saurabh Gupta    schedule 28.03.2019    source источник


Ответы (2)


Спасибо за указание на проблему в документах. Они были обновлены с правильной информацией:

handleNotificationReceived (метод компоновщика)

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

Если вы хотите обрабатывать из отключенного состояния, обязательно используйте раздел handleNotificationOpened метод

person Rodrigo Gomez-Palacio    schedule 08.06.2019
comment
Спасибо за ответ, но что, если пользователь не нажмет на уведомление и не откроет приложение напрямую, а само уведомление будет закрыто при открытии приложения? что тогда? - person Saurabh Gupta; 10.06.2019
comment
К сожалению, в этом случае пользователь должен щелкнуть уведомление, чтобы оно было обработано Saurab - person Rodrigo Gomez-Palacio; 11.06.2019

Я нахожу это в документе:

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

Возможно, ваше приложение не работает в фоновом режиме.

Или проблема в том, что вам нужно вызвать функцию ur после startinit :

this.onesignal.startInit("YOUR_APPID")
this.onesignal.handleNotificationReceived() 
person Sam    schedule 28.03.2019
comment
Я отредактировал вопрос выше, на самом деле я пропустил, чтобы окружить handleNotificationReceived() openOneSignalMessage(){}. - person Saurabh Gupta; 28.03.2019
comment
Как вы сказали, я делаю то же самое. Возможно, приложение не работает в фоновом режиме после его закрытия из последних приложений. - person Saurabh Gupta; 28.03.2019
comment
Я нашел это решение github.com/OneSignal/OneSignal-Cordova-SDK/issues/ 257 надеюсь, что это поможет вам. - person Sam; 28.03.2019
comment
проблема в том, что вы не можете вызвать handleNotificationReceived(), если приложение не работает в фоновом режиме. - person Sam; 29.03.2019
comment
почему это происходит, я имею в виду, что он должен работать в фоновом режиме. - person Saurabh Gupta; 01.04.2019
comment
Попробуйте этот плагин, чтобы увидеть, работает ли ваш плагин в фоновом режиме, а если нет, просто активируйте его: github .com/katzer/cordova-plugin-background-mode - person Sam; 01.04.2019
comment
спасибо, я попробовал это, и это фактически привело к сбою приложения, говоря, что приложение продолжает останавливаться - person Saurabh Gupta; 02.04.2019
comment
Извините, но я действительно не знаю, как вам больше помочь, может быть, кто-то найдет для вас решение. - person Sam; 02.04.2019