gpt4 book ai didi

iphone - WCSession 激活失败

转载 作者:行者123 更新时间:2023-12-03 19:11:28 25 4
gpt4 key购买 nike

当我调用 session.activateSession() 方法时,我遇到了 WatchKit 连接 session 无法激活的问题。这是我用来设置 session 的代码。

if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session.delegate = self // conforms to WCSessionDelegate
session.activateSession()
print("Session has been activated")
}

但是,我在打印行上放置了一个断点,当我检查 session 对象时,它说 sessionActivated 属性仍然为 false,即使在调用 activateSession 之后也是如此。当我调用激活 session 时,我似乎没有遇到任何错误,因此我认为它应该有效,但情况似乎并非如此。

此外,如果我稍后在代码中尝试在 session 对象上使用 sendMessage 方法,如下所示 -

let message = ["request": "fireLocalNotification"]
session.sendMessage(
message, replyHandler: { (replyMessage) -> Void in }) { (error) -> Void in
print(error.localizedDescription)
}

我收到错误代码“操作无法完成。(WCErrorDomain 错误 7004。)”,我查了一下,这意味着“WCErrorCodeSessionNotActivated”。这是我认为 activateSession 方法未正确调用的另一个原因。我什至尝试在发送消息之前直接运行 activateSession 方法,但我仍然收到错误。如果有人能帮忙解释一下发生了什么,那就太好了,谢谢! :)

最佳答案

您应该在 WatchKit 扩展和 iOS 应用程序目标上激活 WatchConnectivity session 。例如,您可以在 InterfaceController 的

中执行此操作
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
if WCSession.isSupported() {
let wcsession = WCSession.defaultSession()
wcsession.delegate = self
wcsession.activateSession()
wcsession.sendMessage(["update": "list"], replyHandler: { (dict) -> Void in
print("InterfaceController session response: \(dict)")
}, errorHandler: { (error) -> Void in
print("InterfaceController session error: \(error)")
})
}
}

在 AppDelegate 中

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

if WCSession.isSupported() {
let wcsession = WCSession.defaultSession()
wcsession.delegate = self
wcsession.activateSession()
}

return true
}

我在几个示例中注意到,人们倾向于仅在处理请求的类中设置委托(delegate),例如如果 watch 要向 iOS 应用程序发送消息,则只能在 iOS 应用程序中设置委托(delegate)。这是错误的。正如 WatchConnectivity 明确指出的那样,您必须在这两种情况下设置委托(delegate),否则您将收到 7004 错误。

关于iphone - WCSession 激活失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191296/

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