簡體   English   中英

即使應用程序在后台運行且未打開,WhatsApp如何知道用戶是否獲得了推送通知?

[英]How does WhatsApp know if the user gets the push notification even if the app is runnng in the background and is not open?

我已經問過相關的問題: 知道蘋果應用程序是否獲得推送通知的任何選項?

我得到了一個答案,當應用程序在后台並且用戶沒有打開時,無法知道推送通知是否到達iPhone ...

但我發現了一些有趣的東西:我用WhatsApp帶了2部iPhone。 我打開,在第一部iPhone,WhatsApp並退出它(WhatsApp現在在后台),然后用第二部iPhone,我發送WhatsApp按摩到第一部iPhone。

當WhatsApp的推送通知到達第一個iPhone時,我可以在消息附近看到兩個“V”(符號)(我不打開推送通知)。 在此之后,我在第一部iPhone中關閉了互聯網和3G,並再次將WhatsApp消息與第二部iPhone一起發送到第一部iPhone。 - 我可以看到按摩附近只有一個“V”(不讀 - 不通過推送通知)。

現在,在第一部iPhone上重新啟用互聯網后,我收到推送通知后,我可以看到兩個“V”(再次 - 我不打開推送通知)。

它是如何工作的? 當WhatsApp在后台運行時,WhatsApp如何知道iPhone是否收到推送通知?

讓我們在關閉WhatsApp應用程序的情況下調用iPhone - 接收器和您發送消息的其他iPhone - 發件人 ,讓我們使用通用術語應用程序而不是WhatsApp

發送方的應用程序無法獲知推送通知已到達接收方 這是推送通知的本質。

但是, 發送方可以向接收方的應用程序發送另一個 - 不是推送通知,而是專有協議 - 消息,它( 接收方 )歡迎以任何特定於應用程序的方式向發送方確認。

所以,我猜(我不知道 - 我與WhatsApp無關),你得到的雙v圖標是應用程序消息到達接收器的應用程序時 - 與推送通知無關。

你的意思是推技術的基礎知識:

whatsapp軟件在后台運行,在特定端口上偵聽傳入消息。 它不斷地這樣做。

BTW:

一個V =從您的手機發送到whatsapp服務器的消息

兩個V =從whatsapp服務器推送到收件人移動設備的消息

藍色V表示已讀取消息

Whatsapp不會顯示該人是否閱讀該消息。 它只是通知消息何時被發送到whatsapp服務器(一個V)以及何時發送到人員電話(2個V)。 雙重並不意味着消息被讀取它只是意味着whatsapp連接到手機並且能夠傳遞消息。

收到推送通知后,接收方可以從推送通知的有效負載中包含的URL下載數據。 通過請求該URL,服務器知道接收方收到了推送通知,並且可以將此狀態傳遞給您的發送方應用程序。

像這樣:

  1. 在推送通知有效內容中添加特定URL
  2. application:didReceiveRemoteNotification:fetchCompletionHandler: method程序委托中實現application:didReceiveRemoteNotification:fetchCompletionHandler: method ,並在該方法中調用有效負載中的URL。
  3. 在服務器上實現一個邏輯,該邏輯將URL調用識別為已接收的通知
  4. 讓您的發件人應用程序不斷從服務器獲取當前通知狀態。

以上海報都是正確的。 只是添加一件事。 如果Whatsapp最近關閉,它仍然在后台運行,仍然可以收到消息(因此回執)。 但是,在應用程序暫時閑置(或其他應用程序具有更高優先級)后,Whatsapp將被終止,然后它將不再接收傳入消息並且不會返回收據。

當然,觀察者會注意到打開應用程序和顯示的新消息之間存在小的延遲,這似乎暗示消息不是在后台下載,而是僅在打開應用程序時下載。 那么為什么它在后台運行時返回收據呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM