Как WhatsApp получает сообщение в фоновом режиме в Windows Phone?

После последнего обновления Whatsapp в Widows Phone Store я заметил, что теперь, когда они показывают всплывающее сообщение на моем устройстве, они отмечают сообщение как доставленное (уведомляют отправителя о том, что сообщение достигло моего устройства).

После того, как я пропустил уведомление о тосте, я отключил все свои подключения к данным, открыл WhatsApp и обнаружил, что именно это сообщение в моем приложении. Это происходит последовательно на устройствах wp7 и wp8. Это происходило даже тогда, когда я отключил фоновый агент! У фонового агента приложение не запускается постоянно.

Итак, мои вопросы, на платформе Windows Phone, где приложение не может работать в фоновом режиме все время, как приложение Whatsapp получает эти сообщения? Использует ли он какой-либо конкретный api / hack для получения (в приложении) тех сообщений, когда он не на переднем плане.

3 ответа

Вопрос, который вы задали, состоит из двух частей: одна для wp7, а другая для wp8. Я буду anser каждый по одному.

Windows Phone 7

Основываясь на моих исследованиях, я обнаружил, что WhatsApp все еще использует API потокового аудио на устройствах wp7 для потоковой передачи сообщений в фоновом режиме, то есть, когда приложение не запущено. Whatsapp подвергся критике за использование этого API, так как его постоянное использование приводит к разряду батареи, а также затрудняет музыкальное восприятие пользователя.

Windows Phone 8

Как только WhatsApp перешел на wp8, они перестали использовать Audio API и перешли на VOIP API. Обратите внимание, что WhatsApp не использует VOIP для каких-либо целей, но их манифест показывает использование API VOIP, и после прочтения многих статей я пришел к выводу, что они используют этот API для активации фонового агента и сообщений пула в фоновом режиме.

При отправке необработанного push-сообщения типа 4 активируется фоновый агент для VOIP, в котором вы можете сделать практически все, от чтения полезной нагрузки до установления нового соединения с сокетом, которое ограничено использованием определенных API.

Я также обнаружил, что даже если пользователь отключает агенты bg для приложения, некоторые существенные агенты bg продолжают работать, например, для агентов bg в API аудиопотока и VOIP API.

Надеюсь, это ответит на ваш вопрос.

В Windows Phone есть нечто, называемое необработанными уведомлениями, они отличаются от push-уведомлений, push-уведомления отображают уведомление, но необработанные уведомления запускают фоновую задачу, которая может выполняться при определенных ограничениях API в течение примерно 15 секунд. (Я думаю, я не уверен в продолжительности времени), я думаю, что делает WhatsApp, это то, что он загружает сообщение и сохраняет его в локальной базе данных, которая поддерживается на устройстве. Когда WhatsApp открыт, он будет читать локальную базу данных, а также синхронизироваться с сервером.

Пожалуйста, поправьте меня, если я ошибаюсь.

Перейти по этой ссылке

Push-уведомление для Windows Phone

Что поможет вам понять это

Сервер поддерживает максимум 30 уведомлений (независимо от типа) для каждого URI. Как только предел 30 достигнут, все новые сообщения, отправленные на сервер, отбрасываются до тех пор, пока устройство не подключится и очередь не может быть очищена.

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