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

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

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

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


person ua741    schedule 11.09.2013    source источник


Ответы (3)


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

Windows phone 7

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

Windows Phone 8

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

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

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

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

person Milan Aggarwal    schedule 03.02.2014

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

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

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

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

person Anobik    schedule 12.09.2013
comment
В основном это приложение использует ту же концепцию, что и Skype для Windows или любого другого. более того, в мобильном устройстве получение фрагментов данных с сервера через мобильное соединение может потребовать значительных накладных расходов. Итак, как только вы получите тост, сообщение будет загружено на ваше устройство. Попробуйте удалить память устройства, она будет стерта, и вы ее не найдете. Веб-страницы делают обратное, когда получают данные с сервера. :) - person Anobik; 12.09.2013
comment
Вы говорите, что как только тост получен, он сохраняется на устройстве. Итак, если для моего приложения получен тост, то когда пользователь откроет приложение (без подключения к Интернету), тогда приложение сможет использовать этот конкретный тост? Если вы это имели в виду, то можете ли вы сказать мне, где скачивается тост? Как я могу получить к нему доступ в моем приложении. PS: Я не думаю, что какое-либо приложение может получить доступ к тостам, которые отправляются службой Push (если пользователь не нажимает на них) - person ua741; 12.09.2013
comment
msdn.microsoft.com/en-us/library /gg680266(v=pandp.11).aspx Пройдите по этой ссылке, она даст вам представление о локальном хранилище. И какое именно хранилище использует приложение, это их беспокоит. Мы не можем использовать данные другого приложения в нашем. это будет Нарушение безопасности. И, очевидно, пользователь этого не захочет. По-прежнему точная файловая структура. Я выполню поиск, если найду точное местоположение файла. - person Anobik; 12.09.2013

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

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

person Anton Thushara    schedule 16.08.2015