2015-10-20 50 views
0

我已經創建了一個發送數據以觀看顯示的應用程序。 當手表屏幕處於活動狀態時,它會完美地發送數據,但當手表進入休眠狀態時,則表明設備未處於活動狀態。WatchConnectivity框架:WKSession維護我請求觀看的隊列

我的問題是,當手表處於活動狀態時,如何通過使用WKSession的sendMessage方法從我的iPhone發送數據?

+0

對不起,你能改說你的問題嗎?我不明白你在問什麼。 – joern

回答

0

如果手錶屏幕關閉,iPhone上的sendMessage調用將不起作用。您只能在手錶屏幕打開時實時發送數據。這與使用從手錶到iPhone的sendMessage(iPhone屏幕可以關閉)不同。這是代碼塊我用我隨時調用的sendMessage從我的iPhone代碼:

// Send messages to any paired apple watch. 
func tryWatchSendMessage(message: [String : AnyObject]) { 
    if self.session != nil && self.session.paired && self.session.watchAppInstalled { 
     self.session.sendMessage(message, replyHandler: nil) { (error) -> Void in 
      // If the message failed to send, queue it up for future transfer 
      self.session.transferUserInfo(message) 
     } 
    } 
} 

然後我安裝蘋果手錶應用具有相同的處理程序,如果通過的sendMessage或transferUserInfo獲取數據。

+0

我已經做了這些事情,但如果Watch屏幕關閉,我發送了一些東西從我的iPhone上觀看,那麼當我發送的數據發生什麼事情時,這些數據會在手錶屏幕上丟失或排隊等待打開? –

+1

如果屏幕關閉並且iPhone調用sendMessage,則調用將失敗,數據將不會傳遞到Apple Watch。在這種情況下,上面的代碼塊通過調用具有相同數據的transferUserInfo來處理此問題。這會在手錶屏幕重新打開時排隊要處理的數據。在監視中,您需要實現session:didReceiveMessage(用於sendMessage成功時)和session:didReceiveUserInfo(用於sendMessage失敗並且transferUserInfo成功時)。 – lehn0058