簡體   English   中英

考慮到操作系統在 30 秒內關閉應用程序,Whatsapp 的網絡版本如何在 iOS 設備上運行?

[英]How does the web version of Whatsapp work on iOS devices considering the OS shuts apps in 30 seconds?

現在對於那些不知道的人,可以去https://web.whatsapp.com/並通過交換二維碼和通過應用程序的網絡擴展聊天來同步你的Whatsapp聊天。

我對他們如何進行初始握手(可能正在與 whatsapp 服務器進行通信)以及他們如何快速同步數據以進行聊天(可能直接從設備到客戶端使用開放套接字)不感興趣。

我很好奇該應用程序如何在 iOS 后台運行 AFAIK 運行后台Intent Service非常簡單。 但不適用於iOS。 iOS 僅允許在應用程序正常關閉后最多 30 秒。

1)我嘗試崩潰應用程序(向上滑動)(仍然是網絡版本正常運行)

2)我禁用了Background App refresh網絡版本沒有停止。

3)即使禁用Notifications ,網絡版本仍然正常工作。

4)當Google Maps為您提供指示該應用程序正在BG中運行的方向時,他們也沒有Blue bar

5) 他們是否使用虛擬Geo Fencing來維持生命? (但那 d 也需要 BG App Refresh)

是 iOS 8 上引入的一些新功能,我不知道

順便提一下,Apple 在 iOS 10 中引入了通知服務擴展點,可用於實現此目的。 以下僅適用於 iOS 9.x 或更早版本。


除了那些使用 VoIP 后台模式(OT:和 IIRC 藍牙后台模式)的應用程序之外,iOS 中的任何應用程序都不能通過保持連接的套接字在后台長期存活,或保證通過遠程通知喚醒。

  • 一個應用程序在applicationDidEnterBackground:上只有大約 5 秒的運行時間applicationDidEnterBackground:在被置於后台之后,除非它為任何后台模式或任務注冊。 如果此委托方法中的時間用完,應用程序將被終止。
  • @xoail 提到的后台任務模型有特定於應用程序、系統強加的時間限制(最多 30 秒......?)並且無法擴展。 用於應用程序在暫停之前完成其當前工作,例如上傳媒體。 自 iOS 7.0 起,后台傳輸服務是長時間運行文件傳輸的替代方案。
  • 觀察到靜音遠程通知僅在充電器和 Wi-Fi 上持續觸發,但在其他情況下始終受 iOS 限制。 所以它有點不確定 - 更不用說可以通過翻轉應用程序的后台應用程序刷新開關來關閉它的事實。
  • VoIP 后台模式(在 iOS 8 及更高版本中)保證在從 APN 接收到 VoIP 通知時調用應用程序的處理程序。 但是 App Review Guidelines 明確指出后台模式只能用於其預期目的。

因此,要么 Apple 放棄 WhatsApp 使用 VoIP 后台模式用於 WhatsApp Call 以外的目的,要么 WhatsApp 碰巧擺脫“使用您的手機同步”架構並為 iPhone 做一些新的事情。

根據文檔,應用程序可以保留在后台對應用程序執行有限更新。 您可以一個接一個地繼續擴展后台進程。 查看執行有限長度的任務。 我認為從后台殺死應用程序仍然會執行系統注冊的操作。

Whatsapp 做了一些巧妙的網絡會話令牌 + 后台應用程序令牌生成以保持會話有效。

正如 Steven Darbey 在#32112433 中提到的,這很可能是使用新的 iOS 8 PushKit 服務實現的,其中包括 VoIP 服務通知類型,允許應用程序從后台恢復。 出於非 VoIP 目的濫用 API,但 Apple 顯然對此視而不見。

https://developer.apple.com/library/prerelease/ios/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html

暫無
暫無

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

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