2015-11-29 76 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