Apple Watch 開發介紹(一)WatchKit App 架構

來源:互聯網
上載者:User

標籤:

WatchKit app和WatchKit extension一起實現了app的介面。當使用者在Apple Watch中操作時,WatchKit app從storyboards中選擇合適的情境。比如,如果使用者查看glance,它就會選擇glance情境。在選擇情境時,WatchKit通知對應的iPhone啟動WatchKit extension來建立管理情境的對象。當常見完全配置好之後,它會顯示在Apple Watch上。這種在WatchKit app和WatchKit extension中傳遞資料的操作完全是在幕後操作的。

顯示了WatchKit app和WatchKit extension間的通訊。

 

管理情境:介面控制器

每個情境是由一個介面控制器對象來管理的, 它是WKInterfaceController類的執行個體。由於一次只在螢幕上顯示一個介面,app展現新介面時會根據使用者操作切換介面控制器。App可以模態介面。切換的類型也決定了介面如何展示。

注意:Glance和自訂通知介面使用特殊的介面控制器,它們和其他介面不同。

 

WatchKit App生命週期

使用者的操作啟動了app也決定了它的生命週期。使用者從主屏啟動app,查看glance或者查看通知介面。每個互動都會啟動WatchKit app和對應的WatchKit extension。Watch app和WatchKit會一直傳遞資訊指導使用者停止操作app,這個時候iOS掛起estension知道下次使用者操作。

在啟動時,WatchKit為當前操作載入合適的情境。如果使用者查看app的glance,WatchKit從storyboard中載入glance情境。如果使用者直接啟動app,WatchKit載入app的初始化情境。載入情境後,WatchKit通知WatchKit extension建立對應的介面控制器用來準備要展示的情境。展示了這個過程。

使用介面控制器的init和awakeWithContext:方法來載入需要的資料,設定對象的值,以及介面展示的準備工作。不要使用willActivate來初始化介面。willActivate方法只在將要顯示的很短時間內調用,所以只能用這個方法做微笑的改變。比如,用這個方法來開始動畫,或者開始只有介面顯示時才執行的操作。

介面在螢幕上時,使用者介面的操作會又介面控制器的自訂方法處理。當使用者動作表格,按鈕,開關等控制項時,WatchKit會調用你的方法來響應。使用這些方法來更新介面以及執行相關的人物。如果要在其他時間執行任務,可以使用NSTimer來實現。

注意:Glance介面不支援事件方法。點擊glance介面會啟動app。

在使用者操作Apple Watch時WatchKit extension會一直運行。Apple Watch的操作一般比較簡短,所有介面控制器應該輕量並且不要執行長時間的任務。當使用者退出app或者停止Apple Watch操作,iOS會停止介面控制器並且掛起WatchKit extension。如

App不同狀態執行的不同任務

在app聲明周期的不同狀態,iOS會調用WKInterfaceController對象的方法來讓它處理。下面的表格列出了基本上要實現的方法,以及他們是做什麼的。

方法 執行的任務
init 第一個初始化的機會
awakeWithContexxt: 使用任何可用的資料配置介面控制器。使用它來載入資料,更新標籤,圖片,表格以及其他storyboard中的對象。context資料是配置新控制器時指定的。例如,在一個多層的介面中建立一個新介面時,會指定下一個介面要顯示的context資料。建議提供context對象但是不是必須的。
willActive 介面馬上就要顯示給使用者了。這個方法中做一個介面小的改變。例如,用這個方法根據新資料改變標籤內容。介面的初始化工作還是要在init和awakeWithContext:方法中做
didDeactivate 使用這個方法來清理介面以及讓介面進入靜止狀態。例如,使用這個方法來停止計時器以及停止動畫。不能在這個方法中給介面對象設定值。從這個時候到willActivate調用之前,所有的試圖改變介面值的方法都被無視了。

 

在模擬器上調試狀態的代碼

在測試中,可以鎖定和解鎖模擬器來確認activation喝deactivation代碼是否按預期的工作。當使用Hardware>Lock命令來鎖定模擬器,WatchKit會調用當前介面的didDeactivate方法。解鎖模擬器的時候,WatchKit會調用willActivate。

 

和已有iOS app共用資料

如果iOS app和WatchKit extension依賴同樣的資料,使用共用的app group來儲存資料。App group是安全執行緒的。由於WatchKit extension和iOS app在不同的沙箱環境中,因此他們不能直接共用檔案以及通訊。App group讓兩個進程可以共用檔案和資料。

在iOS app和WatchKit extension工程的Capabilities tab中設定一個共用的app group。為每個target添加一個entitilements檔案,向檔案中添加一個com.apple.security.application-groups元素。所有的target需要選擇同一個app group。

在運行時,通過讀寫共用的檔案夾來共用資料。使用NSFileManager的containerURLForSecurityApplicationGroupIdentifier:方法來擷取檔案夾根地址。使用這個URL來枚舉檔案夾內容或者建立新的檔案。

也可以用group id建立一個NSUserDefaults對象來共用資料。使用initWithSuiteName:方法建立的NSUserDefaults對象可以訪問共用資料。iOS app和WatchKit extension都可以讀寫資料。

 

直接和iOS app通訊

app可以使用openParentAllication:reply:方法來向iOS app發送請求和接收響應。WatchKit extension不支援後台運行模式。他們只在使用者操作Apple Watch時運行。iOS app沒有那麼多限制,他們可以被配置為在後台運行來為WatchKit extension擷取資料。有些活動可能需要一些時間才能完成,比如擷取使用者的位置,應該由iOS app來完成然後把資料傳給WatchKit extension。

當調用openParentApplication:reply:方法時,iOS在後台啟動或喚醒app然後調用app delegate的application:handleWatchKitEctensionRequest:reply:方法。App delegate通過提供的資訊執行操作然後把結果返回給WatchKit extension。

Apple Watch 開發介紹(一)WatchKit App 架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.