假設你已經用uni-app開發好了一個iOS端的app,現在想要開發一個配套的apple watch app。改怎么去開發呢?是不是一頭霧水,這篇文章就會介紹一些apple watch app開發的知識以及如何在uni-app開發的iOS app基礎上去開發配套的watch app。
一、apple watch 開發知識
apple watch app類型
首先,我們來了解下apple watch app有哪些類型。
我們在新建一個WatchOS app的項目時可以看到,watch app有2種類型。一個是獨立的watch app(Watch-only app),一個是依賴iOS app的watch app(with Companion iOS App),那么他們有什么區別呢?我將從幾個不同的角度去介紹:
- 安裝
watch-only的只能通過apple watch上的appStore去下載安裝
with iOS App的,可以通過手機上Watch應用去安裝可使用的watch app,當然也可以通過appStore下載
- 開發
watch-only新建項目時只有watchKit app和watchKit extension。
with iOS App的則會有一個iOS app的target
UI框架說明
watchKit app雖然可以通過UIKit,使用swift或者OC來開發,但是官方建議的是使用SwiftUI這個新的UI框架開發。因為 SwiftUI 具有聲明式編程、更簡潔的語法、更好的跨平臺性以及對數據綁定和響應式編程的良好支持等優點,特別適合手表、VR眼鏡這種屏幕較小、交互相對簡單的設備。
swiftUI的語言和swift還是有較大的區別的,UI控件的使用、生命周期的管理等都大不一樣,還是需要各位同學去系統的學習一下。
數據請求類型
有一部分watch app是工具類的App(比如鬧鐘),不需要獲取網絡數據。
有一部分watch app是只需要獲取健康數據(步數、心率、睡眠等),通過原生的HealthKit即可獲取。
有一部分watch app需要聯網獲取在線數據,就需要通過Alamofire等網絡庫或者原生的URLSession來實現數據請求。
還有一種特殊的數據獲取方式,就是通過Watch Connectivity實現watch app和手機app數據交換,數據可以通過手機app請求拿到(在線或者其他方式),然后傳輸給watch app。watch app也可以傳輸數據給手機app。下面會詳細講下這個Watch Connectivity。
Watch Connectivity
這里我們是有2個設備,一個watch,一個iphone。對應項目里是有一個app的target,一個watchKit的target。
-
WCSessionManager單例封裝
首先我們來封裝一個Manager來管理數據的發送、接收以