观看连接会话问题
问题描述:
我想从手表扩展程序向手机发送消息以更新并发症。观看连接会话问题
AppDelegate.swift
var session = WCSession.defaultSession()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
if WCSession.isSupported(){
session.delegate = self
session.activateSession()
}
return true
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
replyHandler(["scheduleNames":scheduleNames, "scheduleData":scheduleData])
}
ExtensionDelegate.swift
override init(){
super.init()
if WCSession.isSupported(){
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
self.sendMessage()
}
func sendMessage(){
print("Attempting to send message")
session.sendMessage(["Sender": "Complication"], replyHandler: {
reply in
print(reply.description)
}, errorHandler: {
error in
print(error.description)
})
}
但是当我运行手表模拟器(和手机应用程序不开),我收到
错误域= WCErrorDomain代码= 7007“配对设备上的WatchConnectivity会话无法访问。”
这也是在物理电话和手表。
这可能是什么原因造成的?
UPDATE
这只发生在我从分机拨打电话时。手表应用程序可以发送和接收消息。此外,它在从applicationDidFinishLaunching()调用时起作用,但在扩展委托中没有其他任何东西。
UPDATE
我固定的以前和现在得到
WatchConnectivity会话没有委托。
答
感谢this answer,我想出了这个问题。在requestedUpdateDidBegin()中从Complication调用(这是我正在做的事)在异步方法中执行异步方法,导致更新函数在sendMessage函数返回之前结束。
现在问题是你得到了“没有委托”或“不可达”的错误? – ccjensen
它介于两者之间。但是,我已经找到了这个问题 – milesper