Чтение уведомления Pu sh с помощью Expo при холодном запуске (когда приложение убито) - PullRequest
2 голосов
/ 21 июня 2020

У меня есть автономное приложение Expo, и я отправляю Pu sh уведомления со своего сервера. У меня есть прослушиватель уведомлений в моем приложении. js componentDidMount вот так.

componentDidMount = () => {
  this._notificationSubscription = Notifications.addListener(this._handleNotification);
}

Обработчик вызывается, когда мое приложение работает на переднем плане или в фоновом режиме.

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

Мне кажется, что регистрация слушателя «слишком поздно».

В моем уведомлении есть полезные данные, которые я хочу использовать в приложении, но если приложение не запущено, оно теряется в этом случае «холодного запуска».

Есть ли способ сохранить эти данные уведомления при холодном запуске и вызвать этого слушателя?

Ответы [ 2 ]

0 голосов
/ 17 июля 2020

В настоящее время нет возможности прочитать уведомление Pu sh при «холодном запуске» с помощью Expo.

Pu sh С уведомлениями на удивление сложно работать.

Существует 3 различных состояния, в которых может находиться ваше приложение, и, кроме того, пользователи могут выбрать - или не - взаимодействовать с полученным Pu sh Уведомление в любом из следующих состояний:

  1. Передний план - ваше приложение открыто и в данный момент находится на экране пользователя.
  2. Фон - ваше приложение открыто и скрыто, или устройство заблокировано.
  3. « Убито » - ваше приложение не открыто вообще, или находится в фоновом режиме и некоторое время не использовался.

Expo обрабатывает следующее:

              Foreground    Background   Killed
-------------------------------------------------
   Received    ✅ Yes        ❌ No        ❌ No
 Interacted    ✅ Yes        ✅ Yes       ❌ No

Здесь есть открытая проблема для Expo SDK 38: https://github.com/expo/expo/issues/6943

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

0 голосов
/ 07 июля 2020

Кажется, после обновления Expo 38 по крайней мере, теперь оно согласовано.

  1. Если уведомление запускается, когда приложение находится в фоновом режиме, это представлен немедленно, приложение не информируется об этом

  2. Если уведомление запускается, когда приложение находится на переднем плане, приложение не только получает немедленную информацию об этом, но ... оно также может принять решение на время выполнения, отображать ли предупреждение или воспроизводить звук! (Для получения дополнительной информации см. Документацию по обработчику уведомлений.)

...