1

我正在尝试从手表扩展向手机发送消息以更新并发症。

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 会话不可访问。”

这也出现在实体手机和手表上。

这可能是什么原因造成的?

更新
这只发生在我从分机拨打电话时。手表应用程序可以很好地发送和接收消息。此外,它在从 applicationDidFinishLaunching() 调用时有效,但在扩展委托中没有任何其他内容。

更新
我修复了以前的,现在得到

WatchConnectivity 会话没有委托。

4

1 回答 1

2

感谢这个答案,我发现了这个问题。从 requestsUpdateDidBegin() 中的 Complication 调用(这是我正在做的)在异步方法执行异步方法,导致更新函数在 sendMessage 函数返回之前结束。

于 2016-05-01T14:48:36.937 回答