Как WhatsApp знает, получает ли пользователь push-уведомление, даже если приложение запущено в фоновом режиме и не открыто?

Я уже задал соответствующий вопрос: любой параметр, чтобы узнать, получит ли приложение apple push-уведомление?

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

Но я нашел что-то интересное: Я принимаю 2 iPhone с WhatsApp. Я открываю в первом iPhone WhatsApp и выхожу из него (теперь WhatsApp находится в фоновом режиме), затем со вторым iPhone я посылаю WhatsApp массаж на первый iPhone.

Когда push-уведомление WhatsApp достигает первого iPhone, я могу увидеть два "V" (символа) рядом с сообщением (и я не открываю Push-уведомление). После этого я закрываю Интернет и 3G в первом iPhone и снова отправляю сообщение WhatsApp со вторым iPhone на первый. - и я вижу только один "V" рядом с массажем (не читать - не получать push-уведомление).

Теперь, после повторного включения Интернета на первом iPhone, и после получения push-уведомления я вижу два "V" (опять же - я не открываю push-уведомление).

Как это работает? Как WhatsApp знает, получает ли iPhone push-уведомление или нет, а WhatsApp работает в фоновом режиме?

Ответ 1

Назовем iPhone с закрытым приложением WhatsApp - получателем и другим iPhone, на который вы отправляете сообщения, - отправителем, и давайте использовать родовое приложение термина вместо WhatsApp

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

Тем не менее, отправитель может отправить другое сообщение - не push-уведомление, а prioprietary protocol - сообщение для приложения в приемнике, которое он (получатель) может подтвердить отправителю любым способом, который он хочет,

Итак, я бы предположил (я не знаю - я не связан с WhatsApp в любом случае), что значок double-v, который вы получаете, - это когда сообщение приложения достигает приложения у получателя - и не имеет ничего общего с push-уведомление.

Ответ 2

Что вы имеете в виду, это всего лишь основы технологии push-технологий:

Программное обеспечение Whatsapp работает в фоновом режиме, прослушивая определенный порт для входящих сообщений. Он делает это непрерывно.

BTW:

Одно сообщение V =, доставленное с вашего мобильного устройства на сервер whatsapp

Два сообщения V =, переданные от сервера whatsapp к мобильному получателю

Сообщение о синем V указывает, что сообщение было прочитано

Ответ 3

Whatsapp не показывает, читает ли человек сообщение или нет. Он просто сообщает, когда сообщение было отправлено на серверы whatsapp (один V), ​​и когда он был отправлен на телефон человека (2 В). Двойной не означает, что сообщение было прочитано, это означает, что whatsapp подключился к телефону и смог передать сообщение.

Ответ 4

После получения push-уведомления получатель может загружать данные из URL-адреса, который вы включаете в полезную нагрузку вашего push-уведомления. Запросив этот URL-адрес, сервер знает, что получатель получил push-уведомление и может передать этот статус вашему приложению-отправителю.

Так же:

  • Добавить определенный URL-адрес в полезную нагрузку push-уведомления
  • Внесите application:didReceiveRemoteNotification:fetchCompletionHandler: method в делегат приложения и в этом методе вызывается URL-адрес из полезной нагрузки.
  • Реализовать логику на вашем сервере, которая распознает URL-вызов в качестве полученного уведомления
  • Пусть ваше приложение-отправитель непрерывно получает текущий статус уведомления с сервера.

Ответ 5

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

Конечно, наблюдательный человек заметил бы небольшое отставание между открытием приложения и новыми отображаемыми сообщениями, которые, похоже, предполагают, что сообщения не загружаются в фоновом режиме, а загружаются только при открытии приложения. Итак, почему он возвращает квитанцию ​​во время работы в фоновом режиме?