我想将数据从Iphone传递到Apple Watch。我尝试了所有操作,但是当我使用didReceiveUserInfo函数时,没有任何反应,我检查WCSession是否兼容。

Iphone上的代码:

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")
                   }


我的Apple Watch上的代码:

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检查AppleWatch

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

        }

最佳答案

我在github上创建了一个带有建议补丁的问题。我在自己的设备上测试了此版本的应用程序,手表收到了很好的userInfo信息。我所做的主要更改是将WCSessionDelegate方法的声明从“嵌套函数”移动到文件中的顶级函数。嵌套函数仅在定义它们的函数范围内可用,这意味着委托对象将没有这些方法的实现。

10-08 06:25