1

在我的 InterfaceController 我有以下代码:

@IBAction func buttonClicked() {
        if (WCSession.default.isReachable) {
            let message = ["Message": "Hello"]
            WCSession.default.sendMessage(message, replyHandler: nil)
            print ("message sent")
        }
    }

在 ViewController 我有以下代码:

override func viewDidLoad() {
        super.viewDidLoad()
        if (WCSession.isSupported()) {
            let session = WCSession.default
            session.delegate = self
            session.activate()
        }
    }

func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
        print ("message received")
        print (message)
    }

当我从 Watch App 发送消息时,我收到以下错误

message sent
2017-12-03 19:33:03.903709+0530 Watch Extension[1761:74704] [WC] -[WCSession _onqueue_notifyOfMessageError:messageID:withErrorHandler:] 5BBE38F1-13C7-46E3-8E99-A874B43C6516 errorHandler: NO with WCErrorCodeDeliveryFailed

iOS App 的调试窗口为我提供了以下信息:

2017-12-03 19:35:28.706212+0530 WatchTest[1770:76097] [WC] -[WCSession onqueue_handleDictionaryMessageRequest:withPairingID:]_block_invoke delegate WatchTest.ViewController does not implement delegate method
2017-12-03 19:35:28.707992+0530 WatchTest[1770:76097] [WC] -[WCSession _onqueue_sendResponseError:identifier:dictionaryMessage:] identifier: 96B10064-F17B-4D4B-8F5C-1154984D5163 with WCErrorCodeDeliveryFailed

我是否缺少 ViewController 类中的任何实现?我正在使用 Xcode 9.0

4

1 回答 1

1

我将 buttonClicked 操作方法更改为以下内容:

@IBAction func buttonClicked() {
    if (WCSession.default.isReachable) {
        let message = ["Message": "Hello"]
        print ("message sent")
        WCSession.default.sendMessage(message, replyHandler: { reply in
            self.statusLabel.setText(reply["status"] as? String)
        }, errorHandler: { error in
            print("error: \(error)")
        })
    }
}

sendMessage 可能需要定义回复和错误处理程序。

于 2017-12-03T15:42:28.653 回答