開發概要
Watch App的主要目的是展現iOSApp的簡單且重要的信息提示,所以儘量不要讓Watch App 做後臺任務,或者是在前臺運行的任務也不能耗時較長。Watch App的任務儘量保證都在前臺完成。
OS
系統版本: OS1, OS2
對比:
如果決定將Watch 1.0 App遷移到2.0上,必須得評估這兩者完全不同的系統架構對1.0版本App架構設計帶來的影響。
以下問題需要慎重考慮:
App是否嚴重依賴iCloud?
WatchOS2中,WatchKit extension不再被允許直接訪問iCloud。此類功能都必須由配對的iOS應用完成,再傳輸給手錶。
Watch應用是否依賴配對的iOS應用的數據?
手機上創建的數據,必須傳輸到手錶上供手錶應用使用;手錶應用更改後,必須傳回手機,供其備份。縱然AppleWatch有提供傳輸的幫助,這裏也必須更新相關的數據處理代碼已支持數據同步。這裏,可以考慮異步同步數據,手錶和手機都連接到一個共享的服務器,通過服務器來同步數據。
是否要支持早期的Apple Watch版本?
如果要支持初代WatchKit和WatchOS1,那麼我們需要有不同的target並編譯產生不同的可執行文件。這是因爲Watch OS1.0與Watch OS2.0是兩個完全不同的系統架構,共享代碼遠比分開編譯target的代價大的多。
設備
基本要求
1. Watch App必須要依附於一個iOS的App
2. 一個Watch App由以下部分組成:extension(在iPhone上的Watch應用中看到的部分),Watch App(運行在Watch OS上的),可選部分是:Notification,Glance
Extension的作用:管理,響應用戶的操作
App 的作用:資源文件管理,主要是界面搭建,資源文件管理
Notification作用:支持自定義的推送通知的界面
Glance 的作用:Watch App的重要信息的一個快速展示界面,可以快速啓動App
架構
開發
1.界面控制器WKInterfaceController
類似iOS中的ViewController,與 view controller 不同的是 interface controller 不管理屏幕中實際的 view,WatchKit 以透明的方式對 view 進行處理。一般,一個 WatchKit 應用程序會有多個 interface controller,用來顯示不同的數據類型
2.App生命週期
3.控制器生命週期
4.UI開發部分
4.1 主要界面都要在extension的storyboard文件中預製好
4.2 在運行時不允許,動態創建控制器,通過代碼自定義創建控件,修改控件位置
4.3 在運行時可修改,控件的透明度、show/hide、更新支持修改的控件的屬性
4.4 目前Apple針對extensions開放的系統庫如下:
其中紅框中的frameworks是WatchSDK特有的庫,其他的frameworks在iOS SDK都可以找到。相信Apple後面將開放更多的api,給予開發者更多的權限,豐富Watch App類型。
WatchKit中類層次結構
WKInerfacePicker
WKInerfaceMoive
WKInerfaceMenu
5.界面導航
導航的形式只有兩種:
5.1 page形式
使用segue相關的轉場
5.2 Hierarchical 形式
這個必須要基於控件(button,Grpup,Table row)的事件,使用push或者pop方法來實現轉場
6 iOS APP與Watch App之間數據共享
方式:藍牙
技術:OS1通過創建App group來實現,OS2 通過Watch connectivity framework實現
區別:OS1可以使用NSFileManager的方法來操作iOS上App的目錄;OS2則只能使用NSUserDefaults只讀到iOS App的偏好設置文件
7.Notification
分爲Short-Look和Long-Look兩種形式
1. Short-Look
如果你的iOS App註冊了通知,當iOS App收到了推送消息後,Watch也會提示推送,推送提示的界面是系統提供的模板樣式,包括(App名字,icon,本地或者是遠程通知的payload)
2. Long-Look
當你點擊Short-Look推送界面的時候,系統就會切換到Long-Look界面,這個界面分爲靜態和動態兩種,可以在Storyboard中自定義樣式。點擊推送的消息之後,可以在WKUserNotificationInterface子類接收並響應用戶的操作。
詳細開發指導請參照Apple官網: AppProgramming Guide for watchOS