WCErrorCodeDeliveryFailed:无法传递Payload

Sah*_*ava 14 ios swift watchconnectivity wcsession watchos-3

我正在开发一款使用WCSession方法 在iPhone和Apple Watch之间共享数据的应用程序sendMessage:replyHandler:errorHandler:

实现该方法后,我收到如下错误:

WCSession _onqueue_notifyOfMessageError:withErrorHandler:errorHandler:YES,WCErrorCodeDeliveryFailed.

错误=无法传递Payload.

import Foundation
import WatchKit
import WatchConnectivity

class ResultInterfaceController: WKInterfaceController, WCSessionDelegate {

override func awake(withContext context: Any?) {
    super.awake(withContext: context)

    let applicationData = ["name": "ViratKohli"]
    self.sendToPhone(data: applicationData)
}

func sendToPhone(data: [String: Any]) {

    if WCSession.isSupported() {

        let session = WCSession.default
        session().delegate = self
        session().activate()

        if WCSession.default().isReachable {

            session().sendMessage(data, replyHandler: {(_ replyMessage: [String: Any]) -> Void in

                print("ReplyHandler called = \(replyMessage)")
                WKInterfaceDevice.current().play(WKHapticType.notification)
            }, 
            errorHandler: {(_ error: Error) -> Void in

                print("Error = \(error.localizedDescription)")
            })
         }
    }
}
....
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

abj*_*ato 11

  1. 你有session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void)ios方面的WCSessionDelegate吗?
  2. replyHandler()在这个方法里面打电话吗?

请注意session(_ session: WCSession, didReceiveMessage message: [String : Any])仅对没有replyHandler发送的消息调用.


Amr*_*dhu 8

我遇到了同样的麻烦。如果您使用 replyHandler 发送消息,则必须使用

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

}
Run Code Online (Sandbox Code Playgroud)

代替

func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {

}
Run Code Online (Sandbox Code Playgroud)

用于接收消息。