Как WhatsApp обрабатывает тихие push-уведомления на iOS, когда приложение было убито пользователем? - PullRequest
0 голосов
/ 24 сентября 2018

Из того, что я узнал, тихие push-уведомления не вызывают application:didReceiveRemoteNotification:fetchCompletionHandler:, когда пользователь убил приложение через многозадачный интерфейс.Но, глядя на поведение WhatsApps, я не понимаю, как им удается делать следующее:

  • отключение канала
  • принудительное завершение WhatsApp
  • получение сообщения вотображается значок приглушенного канала
  • , что еще более удивительно =>
  • без запуска WhatsApp, запустите режим полета
  • , теперь запустите WhatsApp => текстотображается в нужном месте

. Это означает, что WhatsApp каким-то образом управляет обработкой получения push-уведомления, хотя приложение закрыто.У кого-нибудь есть идеи как?С .badge, .alert, ...?

1 Ответ

0 голосов
/ 24 сентября 2018

Существуют и другие способы обновления вашего приложения.Еще один способ - использовать фоновое обновление приложения .Фоновое обновление приложения позволяет вашему приложению периодически запускаться в фоновом режиме, чтобы оно могло обновлять свое содержимое.

- Изменить для добавления других возможных методов: -

Другой способ, который можно использовать длякороткий период (фиксированное время) после того, как приложение было убито, запрашивает время фонового выполнения .Это может дать приложению больше времени выполнения.

Для задач, для реализации которых требуется больше времени выполнения, вы должны запросить специальные разрешения для их запуска в фоновом режиме без их приостановки.В iOS в фоновом режиме разрешено запускать только определенные типы приложений .Например, приложения, которые поддерживают передачу голоса по Интернет-протоколу (VoIP) или приложения, действующие в качестве аксессуара Bluetooth LE.

- Edit # 2 -

Это видно из info.plistПриложение WhatsApp, которое использует несколько UIBackgroundModes, любой из них можно использовать для пробуждения / сохранения приложения в фоновом режиме.

часть info.plist в WhatsApp:

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
    <string>fetch</string>
    <string>remote-notification</string>
    <string>voip</string>
</array>
...