2015-11-29 75 views
0

我想將數據從iPhone傳遞到Apple Watch。我嘗試了一切,但是當我使用didReceiveUserInfo函數時,沒有任何反應,我檢查WCSession是否兼容。WatchOS2連接框架不起作用

代碼在我的iPhone:我的Apple關注

if(ipField.text != ""){ 
       do { 
        try watchSession?.transferUserInfo(["name" : "test"]) 
        print("context update") 

       } catch let error as NSError { 
        NSLog("Updating the context failed: " + error.localizedDescription) 
        print("failed") 
        } 

代碼:

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]){ 

    let Value = userInfo["name"] as? String 

    self.currentIpLabel.setText(Value) 
    print("done1") 

} 

WCSESSION檢查iPhone:

if (WCSession.isSupported()) { 
      let session = WCSession.defaultSession() 
      session.delegate = self 
      session.activateSession() 

      print("SUPPORT OK") 
     } 

WCSESSION檢查蘋果手錶

if(WCSession.isSupported()){ 
      watchSession = WCSession.defaultSession() 
      // Add self as a delegate of the session so we can handle messages 
      watchSession!.delegate = self 
      watchSession!.activateSession() 

     } 
+1

你是否在didTransferUserInfo回調中發送任何錯誤返回?如果沒有,請張貼代碼激活會話的雙方以及代碼發送用戶信息和代碼來接收它 – ccjensen

+1

@ccjensen嗨,我在我的問題中添加了代碼。我沒有得到任何錯誤。 – LifeOS

+0

你有解決方案嗎? @ccjensen – LifeOS

回答

1

我在github上創建了一個附帶了建議修補程序的問題。我在我自己的設備上測試了這個版本的應用程序,手錶收到userInfo就好了。我做的主要改變是將WCSessionDelegate方法的聲明從「嵌套函數」移動到文件中的頂層函數。嵌套函數只能在定義函數的範圍內使用,這意味着委託對象不會有這些方法的實現。

+0

令人驚歎!謝謝:D – LifeOS

+0

我可以發送從蘋果手錶到iPhone,工作驚人!但是當我關閉我的應用程序時,我不能再那樣做了,有沒有辦法可以允許它? @ccjensen – LifeOS

+0

這聽起來像是一個單獨的問題:)但如果您問的是手錶應用程序如何與當前未運行的iOS應用程序進行通信,那麼sendMessage API可以在後臺將其喚醒(請確保檢查isReachable屬性之前使用sendMessage) – ccjensen