在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ iOS/ Watch 應(yīng)用結(jié)構(gòu)
上下文菜單
更新記錄
文本與標(biāo)簽
使用 iOS 技術(shù)
開(kāi)發(fā)您的 Watch 應(yīng)用
Watch 應(yīng)用結(jié)構(gòu)
預(yù)覽概要
界面對(duì)象
UI 概要
Tables
配置 Xcode 項(xiàng)目
圖片
通知要點(diǎn)
設(shè)置
界面導(dǎo)航
管理你的預(yù)覽界面
管理自定義 Long Look 界面

Watch 應(yīng)用結(jié)構(gòu)

Apple Watch 應(yīng)用程序包含兩個(gè)部分:Watch 應(yīng)用和 WatchKit 應(yīng)用擴(kuò)展。Watch 應(yīng)用駐留在用戶的 Apple Watch 中,只含有故事板和資源文件,要注意它并不包含任何代碼。而 WatchKit 應(yīng)用擴(kuò)展駐留在用戶的 iPhone 上(在關(guān)聯(lián)的 iOS 應(yīng)用當(dāng)中),含有相應(yīng)的代碼和管理 Watch 應(yīng)用界面的資源文件。

當(dāng)用戶開(kāi)始與 Watch 應(yīng)用交互時(shí),Apple Watch 將會(huì)尋找一個(gè)合適的故事板場(chǎng)景來(lái)顯示。它根據(jù)用戶是否在查看應(yīng)用的 glance 界面,是否在查看通知,或者是否在瀏覽應(yīng)用的主界面等行為來(lái)選擇相應(yīng)的場(chǎng)景。選擇完場(chǎng)景后,Watch OS 將通知配對(duì)的 iPhone 啟動(dòng) WatchKit 應(yīng)用擴(kuò)展,并加載相應(yīng)對(duì)象的運(yùn)行界面。所有的消息交流都在后臺(tái)進(jìn)行。

圖 3-1 Watch 應(yīng)用和 WatchKit 應(yīng)用擴(kuò)展之間的通信

http://wiki.jikexueyuan.com/project/apple-watch-programming-guide/images/app_communication_2x.png" alt="Watch 應(yīng)用和 WatchKit 應(yīng)用擴(kuò)展之間的通信" />

場(chǎng)景管理:界面控制器

您 Watch 應(yīng)用的構(gòu)建模塊是界面控制器,它是 WKInterfaceController 類的實(shí)例。WatchKit 中的界面控制器用來(lái)模擬 iOS 中的視圖控制器:它顯示、管理屏幕上的內(nèi)容,并且響應(yīng)用戶交互。

如果用戶直接啟動(dòng)您的應(yīng)用,系統(tǒng)將從主故事板文件中加載初始界面控制器。根據(jù)用戶的交互,您可以顯示其他界面控制器以讓用戶得到需要的信息。如何顯示額外的界面控制器取決于您應(yīng)用所使用的界面樣式。WatchKit 支持基于頁(yè)面的風(fēng)格以及基于層次的風(fēng)格。這兩個(gè)風(fēng)格不能共存的,要了解更多信息,請(qǐng)參閱:Interface Navigation。

重要提示
Glances 和通知只會(huì)顯示一個(gè)包含相關(guān)信息的界面控制器。用戶與界面控制器的交互操作會(huì)展示應(yīng)用的主界面。要了解如何實(shí)現(xiàn) glance,請(qǐng)參閱 Glance Essentials。要了解自定義通知界面,請(qǐng)參閱:Notification Essentials

Watch 應(yīng)用的生命周期

Apple Watch 上的用戶交互將啟動(dòng)您的應(yīng)用并驅(qū)動(dòng)其生命周期。當(dāng)用戶在 Apple Watch 上運(yùn)行您的應(yīng)用時(shí),用戶的 iPhone 會(huì)自行啟動(dòng)相應(yīng)的 WatchKit 應(yīng)用擴(kuò)展。通過(guò)一系列的信號(hào)交換,Watch 應(yīng)用和 Watch 應(yīng)用擴(kuò)展將互相連接,因此消息能夠在二者之間流通,直到用戶停止與應(yīng)用進(jìn)行交互為止。此時(shí),iOS 將暫停應(yīng)用擴(kuò)展的運(yùn)行。

隨著啟動(dòng)序列的運(yùn)行,WatchKit 自動(dòng)為當(dāng)前界面創(chuàng)建相應(yīng)的界面控制器。如果用戶正在查看 glance,WatchKit 創(chuàng)建出來(lái)的界面控制器將與 glance 相連接。如果用戶直接啟動(dòng)您的應(yīng)用,WatchKit 將從應(yīng)用的主故事板文件中加載初始界面控制器。無(wú)論哪種情況,WatchKit 應(yīng)用擴(kuò)展都提供一個(gè)名為 WKInterfaceController 的子類來(lái)管理相應(yīng)的界面。

界面控制器對(duì)象初始化后,您就應(yīng)當(dāng)為其準(zhǔn)備顯示相應(yīng)的界面。圖 3-2 展示了 Watch 應(yīng)用的啟動(dòng)序列。當(dāng)應(yīng)用啟動(dòng)時(shí),WatchKit 框架自行創(chuàng)建了相應(yīng)的 WKInterfaceController 對(duì)象并調(diào)用 initWithContext: 方法。使用該方法來(lái)初始化界面控制器,然后加載所需的數(shù)據(jù),最后設(shè)置所有界面對(duì)象的值。對(duì)主界面控制器來(lái)說(shuō),初始化方法緊接著 willActivate 方法運(yùn)行,以讓您知道界面已顯示在屏幕上。了解更過(guò),請(qǐng)參閱 App Essentials。

圖 3-2 啟動(dòng) Watch 應(yīng)用

http://wiki.jikexueyuan.com/project/apple-watch-programming-guide/images/launch_cycle_2x.png" alt="啟動(dòng) Watch 應(yīng)用" />

當(dāng)用戶在 Apple Watch 上與應(yīng)用進(jìn)行交互時(shí),WatchKit 應(yīng)用擴(kuò)展將保持運(yùn)行。如果用戶明確退出應(yīng)用或者停止與 Apple Watch 進(jìn)行交互,那么 iOS 將停用當(dāng)前界面控制器,并暫停應(yīng)用擴(kuò)展的運(yùn)行,如圖 3-3 所示。與Apple Watch 的互動(dòng)是非常短暫的,因此這幾個(gè)步驟都有可能在數(shù)秒之間發(fā)生。所以,界面控制器應(yīng)當(dāng)盡可能簡(jiǎn)單,并且不要運(yùn)行長(zhǎng)時(shí)任務(wù)。重點(diǎn)應(yīng)當(dāng)放在讀取和顯示用戶想要的信息上來(lái)。

重要提示
Glance 界面不支持觸摸事件響應(yīng)。點(diǎn)擊你的 glance 界面會(huì)直接進(jìn)入加載應(yīng)用軟件。

您的 Watch Kit 擴(kuò)展包只有在用戶正在觸發(fā) Watch 上的事件的時(shí)候才會(huì)響應(yīng)。這意味著與您的 Watch 進(jìn)行數(shù)據(jù)交互會(huì)非常的簡(jiǎn)短,所以,視圖控制器需要盡可能的輕量級(jí),且不能執(zhí)行耗時(shí)的任務(wù)。當(dāng)用戶退出了您的應(yīng)用軟件,或者是中斷了與 Watch 的交互。iOS 會(huì)檢測(cè)到當(dāng)前的視圖控制器,然后掛起您的操作。

圖 3-3 界面控制器的生命周期

http://wiki.jikexueyuan.com/project/apple-watch-programming-guide/images/watch_app_lifecycle_simple_2x.png" alt="界面控制器的生命周期" />

應(yīng)用各階段生命周期中執(zhí)行的任務(wù)

在應(yīng)用生命周期的不同階段,iOS 將會(huì)調(diào)用 WKInterfaceController 對(duì)象的相關(guān)方法來(lái)讓您做出相應(yīng)的操作。表 3-1 列出了大部分您應(yīng)當(dāng)在界面控制器中聲明的主要方法。

表 3-1 WKInterfaceController 的主要方法

方法 方法的用途
init 初始化你的視圖控制器。
awakeWithContext: 這個(gè)方法用來(lái)準(zhǔn)備顯示界面。借助它來(lái)加載數(shù)據(jù),以及更新標(biāo)簽、圖像和其他在故事板場(chǎng)景上的界面對(duì)象。
willActivate 這個(gè)方法可以讓您知道該界面是否對(duì)用戶可視。借助它來(lái)更新界面對(duì)象,以及完成相應(yīng)的任務(wù),完成任務(wù)只能在界面可視時(shí)使用。
didDeactivate 使用 didDeactivate 方法來(lái)執(zhí)行所有的清理任務(wù)。例如,使用此方法來(lái)廢止計(jì)時(shí)器、停止動(dòng)畫或者停止視頻流內(nèi)容的傳輸。您不能在這個(gè)方法中設(shè)置界面控制器對(duì)象的值,在本方法被調(diào)用之后到 willActivate 方法再次被調(diào)用之前,任何更改界面對(duì)象的企圖都是被忽略的。

在模擬器上進(jìn)行測(cè)試

測(cè)試期間,您可以通過(guò)鎖定與解鎖您的模擬器來(lái)驗(yàn)證是否達(dá)到了你的預(yù)期的效果。當(dāng)您在使用 Hardware > Lock 命令時(shí),WatchKit 會(huì)調(diào)用當(dāng)前控制器的 didDeactivate 方法。當(dāng)您解鎖了模擬器,WatchKit 會(huì)執(zhí)行當(dāng)前控制器的 willActivate 方法。

與 Containing iOS 應(yīng)用共享數(shù)據(jù)

如果您的 iOS 應(yīng)用和 WatchKit 應(yīng)用擴(kuò)展都依賴于相同的數(shù)據(jù),那么您可以使用共享程序組來(lái)存儲(chǔ)數(shù)據(jù)。共享程序組是一個(gè)位于本地文件系統(tǒng)的區(qū)域,應(yīng)用擴(kuò)展和應(yīng)用都能夠訪問(wèn)。由于兩個(gè)程序在不同的沙箱環(huán)境中運(yùn)行,它們一般情況下都不與對(duì)方共享文件和進(jìn)行通信。共享程序組讓共享數(shù)據(jù)成為可能。你可以使用這個(gè)空間來(lái)存儲(chǔ)共享的數(shù)據(jù)文件或者在兩個(gè)程序間交換消息。

您可以在 iOS 應(yīng)用和 WatchKit 應(yīng)用擴(kuò)展中的 Capabilities 選項(xiàng)卡中啟動(dòng)共享程序組。激活這項(xiàng)功能后,Xcode 將會(huì)為每個(gè)對(duì)象添加授權(quán)文件(需要的話),并給那個(gè)文件添加 com.apple.security.application-groups 授權(quán)。要共享數(shù)據(jù),這兩個(gè)對(duì)象必須選擇相同的共享程序組。

程序運(yùn)行時(shí),您可以通過(guò)在共享容器目錄中讀寫文件以在兩個(gè)程序間共享數(shù)據(jù)。要訪問(wèn)容器,請(qǐng)使用 NSFileManager 中的 containerURLForSecurityApplicationGroupIdentifier:方法來(lái)接收該目錄的根路徑。使用方法返回的 URL 來(lái)枚舉目錄內(nèi)容或者在目錄中為文件創(chuàng)建新的 URL。

與 Containing iOS 應(yīng)用進(jìn)行通信

Watch 使用方法 openParentApplication:reply: 來(lái)給 iOS 發(fā)送請(qǐng)求并等待回復(fù)。WatchKit 擴(kuò)展包并不支持后臺(tái)運(yùn)行;它只會(huì)在用戶直接主動(dòng)觸碰它時(shí)才會(huì)響應(yīng)。containing iOS 應(yīng)用在設(shè)置上有許多限制,他可以被配置成后臺(tái)收集 WatchKit 擴(kuò)展包的數(shù)據(jù)的模式。有些事件可能需要額外的時(shí)間來(lái)完成,例如接收用戶定位的數(shù)據(jù),這個(gè)就需要通過(guò) iOS 來(lái)收集數(shù)據(jù),然后傳輸給 Watch。

當(dāng)您使用 openParentApplication:reply: 方法后,iOS 會(huì)在后臺(tái)啟動(dòng)或者喚醒 containing iOS 應(yīng)用,然后調(diào)用方法 application:handleWatchKitExtensionRequest:reply: 。這個(gè)方法會(huì)用提供的字典數(shù)據(jù)執(zhí)行請(qǐng)求,然后給 WatchKit 擴(kuò)展包反饋結(jié)果。

上一篇:設(shè)置下一篇:文本與標(biāo)簽