概述
Watch App 一般需要展示外部數(shù)據(jù),它可以直接從web服務(wù)、CloudKit或其他在線資源訪問數(shù)據(jù)。也可以從配對的iPhone共享數(shù)據(jù),但這不是 Watch App 訪問數(shù)據(jù)的主要方式。
直接訪問數(shù)據(jù)
Watch App 應(yīng)用程序可以直接連接到Web服務(wù)和其他在線資源。發(fā)出這些請求時(shí),系統(tǒng)可以通過配對的iPhone作為代理、通過已知的WiFi網(wǎng)絡(luò)或通過手表自己的蜂窩連接來發(fā)送數(shù)據(jù)。
使用URLSession對象發(fā)出網(wǎng)絡(luò)請求,會話的類型取決于 Watch App 需求:
默認(rèn)會話或臨時(shí)會話
如果您的應(yīng)用程序在前臺運(yùn)行,請使用默認(rèn)會話或臨時(shí)會話,以避免延遲您的請求。更多信息請看 Making Default and Ephemeral Requests后臺會話
如果您的應(yīng)用程序在后臺運(yùn)行(或即將變?yōu)榉腔顒?dòng)狀態(tài)),請使用后臺會話以確保請求完成。后臺會話可確保即使您的應(yīng)用程序變?yōu)榉腔顒?dòng)狀態(tài)或終止,您的應(yīng)用程序最終仍會收到響應(yīng)。但是,系統(tǒng)可能會根據(jù)可用資源延遲或推遲后臺會話。更多信息請看 Making Background Requests.
與配對的iPhone共享數(shù)據(jù)
盡管watchOS應(yīng)用可以安排定期的后臺任務(wù)來更新其信息,但這些任務(wù)受到嚴(yán)格限制-無論是每天可以喚醒應(yīng)用的次數(shù),還是喚醒應(yīng)用可以運(yùn)行的時(shí)間。此外,不能保證 Watch App 有后臺執(zhí)行時(shí)間,那些存在于表盤小部件的App和擴(kuò)展塢中的App(如圖1和圖2所示),系統(tǒng)會給予更高的優(yōu)先級。


如果 Watch App 已安裝了配套的iOS App,則可以利用它來從其配套軟件中更新 Watch App 。例如,如果用戶的iPhone和Apple Watch可以相互通信,請使用 Watch Connectivity 框架將更新從iOS發(fā)送到watchOS。
但是,WatchConnectivity并非始終可用。在watchOS 6及更高版本中,用戶可能不會為其獨(dú)立的watchOS應(yīng)用程序安裝配套的iOS App。此外,隨著Watch Series 3(GPS +蜂窩網(wǎng)絡(luò))的發(fā)布,即使相依的應(yīng)用程序也可能會長時(shí)間遠(yuǎn)離配對的iPhone。因此不能依靠WatchConnectivity作為更新 Watch App 的唯一方法。而是將WatchConnectivity框架用作機(jī)會優(yōu)化方法,而不是提供新鮮數(shù)據(jù)的主要方法。
Watch App 的幾種網(wǎng)絡(luò)請求方式
當(dāng)watchOS應(yīng)用程序進(jìn)行網(wǎng)絡(luò)請求時(shí),系統(tǒng)可以通過配對的iPhone作為代理、通過已知的WiFi網(wǎng)絡(luò)或通過手表自己的蜂窩連接來發(fā)送數(shù)據(jù)。在開發(fā)應(yīng)用程序時(shí),應(yīng)確保在這三種路由中測試網(wǎng)絡(luò)請求是否可用。
首先,手表嘗試通過配對的iPhone代理請求。手表通過藍(lán)牙與手機(jī)通信,共享手機(jī)與互聯(lián)網(wǎng)的連接。連接到配對的iPhone時(shí),控制中心在左上角顯示一個(gè)綠色的iPhone圖標(biāo)。

如果手表無法連接到配對的iPhone,但可以連接到已知的WiFi網(wǎng)絡(luò)(用戶以前用手機(jī)登錄過的網(wǎng)絡(luò)),則它將使用WiFi網(wǎng)絡(luò)發(fā)送請求。連接到已知網(wǎng)絡(luò)后,控制中心將在左上角顯示W(wǎng)iFi網(wǎng)絡(luò)。

最后,如果手表無法連接至已配對的iPhone或已知的WiFi網(wǎng)絡(luò),它將使用自己的蜂窩連接發(fā)送請求。此路線僅在Apple Watch Series 3(GPS +蜂窩電話)上可用。使用蜂窩連接時(shí),控制中心在左上角以綠色點(diǎn)顯示蜂窩連接的信號強(qiáng)度。
