Подтвердить что ты не робот

Как веб-версия Whatsapp работает на устройствах iOS с учетом ОС, закрывает приложения за 30 секунд?

Теперь для тех, кто не знает, можно перейти на https://web.whatsapp.com/ и синхронизировать чаты Whatsapp, обменявшись QR-кодом и чатом через веб-расширение приложения.

Мне не интересно, как у них начальное рукопожатие (возможно, общение с серверами whatsapp), так и то, как они синхронизируют данные так быстро для общения (возможно, использование Open сокетов напрямую с устройства на клиент).

Мне интересно, как работает , как приложение работает в фоновом режиме на iOS. AFAIK с фоном Intent Service довольно прост. Но не для iOS. iOS позволяет только до 30 секунд после закрытия приложения.

1) Я попытался свернуть приложение (проведите по экрану вверх) (все же веб-версия работала нормально)

2) Я отключил Background App refresh, веб-версия не остановилась.

3) Даже отключить Notifications, однако веб-версия работает нормально.

4) Кроме того, они не имеют Blue bar подобных, когда Google Maps указывает вам, что приложение работает в BG

5) Используют ли они Dummy Geo Fencing, чтобы сохранить их в живых? (но для этого требуется также обновление BG App)

Это какая-то новая функция в iOS 8, которая была введена, и я не знаю о

4b9b3361

Ответ 1

Как примечание, Apple представила точку расширения службы уведомлений в iOS 10, которая может быть использована для достижения этой цели. Следующее относится только к iOS 9.x или ранее.


Никакое приложение в iOS не может долго жить в фоновом режиме с помощью сокета keep-alive или гарантированно просыпаться удаленными уведомлениями, кроме тех, которые используют режим фонового режима VoIP (OT: и IIRC Bluetooth).

  • У приложения есть только ~ 5 секунд времени выполнения на applicationDidEnterBackground: после того, как он помещен в фоновом режиме, если он не зарегистрирован для каких-либо фоновых режимов или задач. Приложение будет прекращено, если в этом делететете не хватит времени.
  • Фоновая модель задачи, упомянутая в @xoail, имеет ограниченный для приложения системный лимит времени (до 30 секунд...?) и не может быть расширен. Это приложение может завершить свою текущую работу, например. загружая носитель перед приостановкой. Служба передачи фона, так как iOS 7.0, является альтернативой для длительной передачи файлов.
  • Наблюдается, что Silent Remote Notificaiton запускается последовательно только на зарядном устройстве и в Wi-Fi, но в любом случае с дросселем iOS. Таким образом, это своего рода индетерминистский - не говоря уже о том, что это можно отключить, щелкнув переключатель фонового обновления приложения.
  • Фоновый режим VoIP (в iOS 8 и более поздних версиях) гарантирует вызов обработчика приложения, когда из APN получено уведомление VoIP. Но в Руководстве по обзору приложений четко указано, что фоновые режимы должны использоваться только по назначению.

Таким образом, либо Apple отказывается от WhatsApp использования фонового режима VoIP для целей, отличных от WhatsApp Call, или WhatsApp, случается, уходит от архитектуры "использовать свой телефон для синхронизации" и делает что-то новое для iPhone.

Ответ 2

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

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

Ответ 3

Как упоминалось в статье № 32112433 Стивена Дарби, это скорее всего реализовано с использованием новой службы IOS 8 PushKit, которая включает в себя тип уведомления службы VoIP, позволяющий приложениям возобновляться с фона. Неправильное использование API для целей, отличных от VoIP, но Apple, по-видимому, закрывает на него глаза.

https://developer.apple.com/library/prerelease/ios/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html