Не удалось отклонить push-уведомление, отображаемое в приложении - PullRequest
0 голосов
/ 08 июля 2019

Я отправляю push-уведомления с помощью Firebase Cloud Messaging на устройства Android и iOS. На Android все работает как положено. На iOS я также могу получать уведомления, но у меня довольно странная проблема на моем iPhone. Что я делаю:

  1. Закройте мое приложение.
  2. Отправка тестового уведомления с консоли Firebase на мое устройство iOS.
  3. Получать уведомления на iPhone.
  4. Нажмите на уведомление, чтобы открыть мое приложение.

Теперь приложение открывается, как и ожидалось. Но по какой-то причине уведомление теперь отображается внутри приложения как предупреждение (или что-то подобное). И отмахнуться от этого невозможно!

Вот несколько скриншотов этого процесса:

Push notification as it should be Open the notification Push notification shown in-app which can't be dismissed

При выполнении тех же шагов на моем устройстве Android также открывается приложение, но не отображается предупреждение или что-либо еще. Приложение запускается как обычно.

Моя цель - удалить это уведомление в приложении. Я просто хочу, чтобы приложение запускалось как обычно при нажатии на push-уведомление.

Проверено на iPhone 6 с iOS 12.3.1.

Использование "react-native-firebase": "^5.5.4" с "react-native": "^0.59.9".

Код пользовательского приложения:

У меня нет специального кода на стороне приложения, за исключением того, что я запрашиваю у пользователя необходимые разрешения для получения push-уведомлений и получения токена обмена сообщениями Firebase.

Что я уже пытался сделать:

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

Заранее большое спасибо!

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Это не из-за самого уведомления. Это из-за предупреждения, которое вы представили.

Каждое предупреждение должно содержать хотя бы одну кнопку, сгенерированную с помощью UIAlertAction.

Предупреждения (и таблицы действий) автоматически отклоняются при касании любой кнопки внутри действия. Так что нет необходимости в дополнительном коде для отклонения, но вы ДОЛЖНЫ указать хотя бы один UIAlertAction для вашего UIAlertController

0 голосов
/ 08 июля 2019

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

Источником этого предупреждения в приложении был просто какой-то пользовательский код в AppDelegate.m я не знал о том, что я относительно новичок в кодовой базе этого проекта.

В деталях был этот метод showPush, который вызывался в различных обработчиках, отвечающих за получение push-уведомлений:

- (void)showPush: (id)userInfo {
  NSString *title = userInfo[@"aps"][@"alert"][@"title"];
  NSString *message = userInfo[@"aps"][@"alert"][@"body"];
  UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
  [[[self window] rootViewController] presentViewController:alert animated:true completion:nil];
}

После удаления этого пользовательского кода все работает как положено.

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