观看连接会话问题

问题描述:

我想从手表扩展程序向手机发送消息以更新并发症。观看连接会话问题

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会话没有委托。

+0

现在问题是你得到了“没有委托”或“不可达”的错误? – ccjensen

+0

它介于两者之间。但是,我已经找到了这个问题 – milesper

感谢this answer,我想出了这个问题。在requestedUpdateDidBegin()中从Complication调用(这是我正在做的事)在异步方法中执行异步方法,导致更新函数在sendMessage函数返回之前结束。