从Watch到Iphone发送消息时出错

时间:2017-09-19 12:58:07

标签: ios iphone swift apple-watch

我正在开发一款手表应用。我必须从手机发送数据才能观看。 这工作正常。

当我从手表向移动应用程序发送消息时,会出现主要问题,因为我希望通过手表应用程序启动通信。我已经实现了将数据从手表发送到移动应用程序但总是得到这个

的方法
  

“WCErrorDomain Code = 7014”无法传递有效负载。“错误。

我使用的是xcode 7.3,而watchOS版本是2.0。

还有一件事:sendMessage方法是否有可能使用监视连接框架在后台打开移动应用程序?或者,如果有人知道在后台打开移动应用程序的任何其他方式,请建议我。提前谢谢。

session.sendMessage(message, replyHandler: { reply in
       }, errorHandler: { error in
               print("error: \(error)")
        })

修改

在AppDelegate和ExtensionDelegate中:

override init() {
    super.init()
    setupWatchConnectivity()
}

private func setupWatchConnectivity() {
    if WCSession.isSupported() {
        let session = WCSession.defaultSession()
        session.delegate = self
        session.activateSession()
    }
}

在ExtensionDelegate中:

func sendMessage(){
    let session = WCSession.defaultSession()
    let applicationData:[String:AnyObject] = ["text":"test", "badgeValue": 100 ]

    WatchSessionManager.sharedManager.sendMessage(applicationData, replyHandler: {replyMessage in
        print("reply received from iphone")
        }, errorHandler: {(error ) -> Void in
            // catch any errors here
            print("no reply message from phone")
    })
}

在AppDelegate中:

func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
    let text = message["text"] as! String
    let badgeValue = message["badgeValue"] as! Int

    dispatch_async(dispatch_get_main_queue()) { () -> Void in

        print("iphone received message from watch App")
        self.sendNotification(text, badgeValue: badgeValue)
        let applicationDict = ["wake": "nowAwake"]
        replyHandler(applicationDict as [String : String])

    }

}

在watchSessionManager中:

        func sendMessage(message: [String : AnyObject], replyHandler: (([String : AnyObject]) -> Void)?, errorHandler: ((NSError) -> Void)? = nil){

       session.sendMessage(message, replyHandler: { reply in
            }, errorHandler: { error in
                print("error: \(error)")
        })
          print("mesage %@",message)

    }

0 个答案:

没有答案