![](/img/trans.png)
[英]Are push notification received on my device even if the app is not running (not even in background) ?
[英]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,服務器知道接收方收到了推送通知,並且可以將此狀態傳遞給您的發送方應用程序。
像這樣:
application:didReceiveRemoteNotification:fetchCompletionHandler: method
程序委托中實現application:didReceiveRemoteNotification:fetchCompletionHandler: method
,並在該方法中調用有效負載中的URL。 以上海報都是正確的。 只是添加一件事。 如果Whatsapp最近關閉,它仍然在后台運行,仍然可以收到消息(因此回執)。 但是,在應用程序暫時閑置(或其他應用程序具有更高優先級)后,Whatsapp將被終止,然后它將不再接收傳入消息並且不會返回收據。
當然,觀察者會注意到打開應用程序和顯示的新消息之間存在小的延遲,這似乎暗示消息不是在后台下載,而是僅在打開應用程序時下載。 那么為什么它在后台運行時返回收據呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.