gpt4 book ai didi

ios - WCSession 发送消息 :replyHandler error code 7014 (WCErrorCodeDeliveryFailed)

转载 作者:IT王子 更新时间:2023-10-29 08:11:30 54 4
gpt4 key购买 nike

我有一个 Watch OS 2 应用程序,它通过 WCSession 方法与 iOS 应用程序通信 sendMessage:replyHandler:errorHandler:

iOS 应用程序回复正确,但有时我收到域 WCErrorDomain 的代码 7014 的错误:“无法传递有效负载”

当 iOS 应用程序不在前台时,这种情况更常发生。

我没有找到这个问题的任何解决方案,我希望你们中的一个知道这个问题的解决方案

最佳答案

在我的例子中,我必须实现两个委托(delegate):

  1. 没有任何replyHandler

    func session(_ session: WCSession,
    didReceiveMessage message: [String : Any])
  2. replyHandler

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

如果您在没有 replyHandler 的情况下发送消息,那么第一个委托(delegate)将运行。
如果您使用 replyHandler 发送消息,则第二个委托(delegate)会运行。


在某些情况下我只发送一条消息,而在其他情况下我发送一条消息并期待对方的回复。
但是...我只实现了第二个委托(delegate) -_-

无论如何,最终为了减少重复代码,我实现了一个通用方法并最终得到:

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

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

//Helper Method
func handleSession(_ session: WCSession,
didReceiveMessage message: [String : Any],
replyHandler: (([String : Any]) -> Void)? = nil) {
//Common logic
}

Watch OS 4

关于ios - WCSession 发送消息 :replyHandler error code 7014 (WCErrorCodeDeliveryFailed),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200630/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com