DidRecieveRemoteNotification не вызывается сразу, когда приложение находится в фоновом режиме

Я пытаюсь использовать push-уведомления Apple. Все работает нормально, кроме случаев, когда приложение находится в фоновом режиме.

Метод обратного вызова DidRecieveRemoteNotification иногда не вызывается сразу после получения уведомления. Иногда для вызова требуется более 5 минут. Это стандартное поведение?

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

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Тихие уведомления немедленно вызывают обратный вызов, когда они находятся в фоновом режиме, поскольку их цель — разбудить приложение на короткий период времени.

В целях экономии заряда батареи обычные push-уведомления не будут вызывать обратный вызов в фоновом режиме (если только ваше приложение не выполняет что-то еще в фоновом режиме). Обратный вызов будет вызван при следующем открытии приложения, будь то нажатие на уведомление или иным образом.

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

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

Daniel Glos 22.05.2019 19:47

Итак, после дальнейшего расследования я обнаружил, что была еще одна ошибка, не позволяющая iOS разбудить мое приложение. Теперь он работает как положено с тихими уведомлениями. Спасибо!

Daniel Glos 22.05.2019 22:03

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

Daniel Glos 23.05.2019 08:57

@DanielGlos, как быстро вы отправили 50? PushNotificaitons не имеют соглашения об уровне обслуживания. Они могут быть задержаны, они могут никогда не появиться, только один хранится на серверах яблок, если вы не в сети, а остальные удаляются и т. д. Какого варианта использования вы пытаетесь достичь, вам может понадобиться веб-сокет

Simon McLoughlin 23.05.2019 11:24

Когда клиент создает новый заказ, отправляется уведомление, и приложение должно распечатать счет заказа. В документации iOS говорится: «Приложения, которые потребляют значительное количество энергии при обработке удаленных уведомлений, не всегда могут быть пробуждены раньше для обработки будущих уведомлений». так что, возможно, это тот случай, когда он перестает работать после получения нескольких уведомлений.

Daniel Glos 23.05.2019 16:56

@DanielGlos да. Если вы пытаетесь создать приложение, которое всегда будет прослушивать события (возможно, вы создаете что-то для магазина, например, приложение для точек продаж), то PushNotifications — неправильный путь. Вам нужно будет использовать веб-сокет между вашим бэкэндом и включить фоновый режим, чтобы соединение могло оставаться открытым в фоновом режиме.

Simon McLoughlin 23.05.2019 16:58

Другие вопросы по теме