Apple Watch的通訊機制

通信機制網絡

(1)用戶須要開啓藍牙鏈接Watch後在APP中進行設置,調整手錶與iPhone的交互關係,藍牙距離9米,超過距離,斷開鏈接session

 

(2)iPhone 與AppleWatch處於同一Wi-Fi網絡(或者鏈接到由iPhone創建的Wi-Fi熱點),只要信號存在,雙方距離多遠均可以app

 

(3)watch應用對象添加到項目後,包含Watch App 和 WatchKit Extension。Watch App 位於iWatch上,目前只容許包含storyboard 和 Resource文件;Watch Extension 位於用戶的iPhone安裝的對應App上,這裏包括咱們須要實現的代碼邏輯和其餘資源。這兩部分經過Watch Kit進行鏈接通信,用戶點擊Watch App後,與Watch匹配的iPhone會啓動WatchKit extension,而後和Watch創建鏈接,產生通訊框架

 

 iPhone和Apple Watch通訊的API操作系統

(1)使用WKInterfaceController中的openParentApplication:rely:方法在後臺喚醒iPhone端 主應用,由主應用去進行網絡數據的處理,處理完返回WatchKit擴展所需的數據線程

//WatchKit Extension 發送請求喚醒主應用代理

+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void(^)(NSDictionary * replyInfo,NSError * error))reply;對象

 

(2)主應用處理watchKit請求的方法,UIApplicationDelegate隊列

 

-(void)application:(UIApplication*)application handleWatchKitExtensionRequest:(NSDictionary*)userInfo reply:(void (^)(NSDictionary *))reply;事件

須要注意的是主應用每次執行UIApplicationDelegate方法,處理完成WatchKit的請求後都要回調reply(replyInfo);不然這個方法會響應失敗。

 

iPhone app 和它的Watch app通訊

iPhone app可使用Darwin Notification Center(Core Foundation框架的API) 通知WatchKit Extension 一個特定的事件

【注】一個應用只有惟一一個Darwin Notification Center,全部的Drawin通知都是系統級的,要想通知發出,主線程須要在一個經常使用的模式下運行,Watch 和iPhone 必須在前臺運行才能處理髮送和接收Darwin通知,不能經過Darwin通知傳送對象,只能攜帶一個名字和userInfo字典,Darwin通知是非持久性的,是即時傳送的,若是放置後臺,通知就會丟失

 

使用App Groups 共享數據

使用App Groups 和 NSUserDefaults 在iOS應用和WatchKit 擴展之間共享少許數據很是容易,對於其餘資源,好比Core Data ,可以使用共享容器來簡化它們之間的數據訪問而且保持最新的數據

 

使用Handoff

Handoff 容許用戶簡單的在iPhone和Apple Watch 之間切換任務,WKInterfaceController中的Handoff API可被用在Glance和自定義通知界面中,能夠傳給應用程序的主界面控制器

 

iPhone 和 Watch 雙向通訊iOS9 (既能夠Watch向iPhone發送數據,也可讓iPhone主動向Watch發送數據)

Watch Connectivity

一、官方文檔的代碼

第一行  session是永遠支持WatchOS的,這句是爲了檢查iOS設置是否支持session

第二行 獲取一個默認session實例

第三行 設置session的代理

第四行 設置session爲活躍狀態

 

2.WCSession的狀態

paired  是否與設備配對

WatchAppInstalled WatchApp是否已安裝

complication 是否可用

 

3.通信的分類-WatchConnectivity框架的通訊方式有兩種模式,一種是後臺傳輸,另外一種是交互式消息

 

後臺傳輸是最經常使用的通訊模式,面向內容與用戶交互,主要用於傳輸非即時的內容,體如今內容可由操做系統智能傳輸(操做系統容許發送方可退出,選擇傳輸機制,支持接收者下次啓動時發送,並將內容以隊列的方式發送)

類型:應用上下文內容傳輸,用戶數據傳輸,文件傳輸

實現步驟:

獲取默認的WCSession並開啓

實現WCSessionDelegate接收回調方法

發送消息並處理響應消息

接收端處理接收和響應(可選)

 

WatchConnectivity在iOS8和iOS9中的區別

iOS8 中Watch與iPhone之間的通訊只能經過Watch主動發起請求,iPhone響應這個請求的方式來完成一次通訊,不可以iPhone直接鏈接Watch,向Watch發送數據

iOS9 中是雙向操做

 

iOS8 中 發送數據的內容只能爲普通的字典數據類型

iOS9 不但能發送簡單的字典數據,還能夠支持發送一些數據(NSData)及文件類型

相關文章
相關標籤/搜索