Watch OS 应用程序无法与 iOS 应用程序连接

2024-03-06

我正在尝试将我的 Watch OS 应用程序与 iOS 应用程序连接并获取一些数据,但当我尝试与 iOS 应用程序连接时出现以下错误:

[WC] __28-[WCSession activateSession]_block_invoke_2 sessionReadyForInitialStateWithCompletionHandler 由于 NSXPCConnectionInterrupted 失败

__44-[WCSession updateApplicationContext:error:]_block_invoke 由于 WCErrorCodeSessionNotActivated 失败 WatchConnectivity 会话尚未激活。

iOS应用程序代码:

- (void) startSession{
if ([WCSession isSupported]) {
    self.session = [WCSession defaultSession];
    self.session.delegate = self;
    [self.session activateSession];
}

}

观看操作系统代码:

func startSession() {
    if(session.activationState != .activated){
        session.delegate = self
        session.activate()
    }
}
public func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?){
    print("activationDidCompleteWith")
    if activationState == WCSessionActivationState.activated {
        NSLog("Activated")
        if(WCSession.default().isReachable){

            do {
                try session.updateApplicationContext(
                    [WatchRequestKey : "updateData"]
                )
            }
            catch let error as NSError {
                print("\(error.localizedDescription)")
            }
        }
    }
    
    if activationState == WCSessionActivationState.inactive {
        NSLog("Inactive")
    }
    
    if activationState == WCSessionActivationState.notActivated {
        NSLog("NotActivated")
    }
}

iOS 应用程序位于 Objective C 中,手表应用程序位于 swift 中

我首先执行我的 iOS 应用程序代码,它的委托方法运行,但是当我运行 watch os 应用程序时,它无法执行任何委托方法,并产生上述错误。


The activate()方法运行异步地 https://developer.apple.com/reference/watchconnectivity/wcsession/1615655-activate从 Watch OS v2.2 开始。所以,在你的代码中,调用updateApplicationContext就在调用之后activate()不提供任何保证在尝试更新应用程序上下文时会话将被实际激活。

正确的流程是将您的消息移至session(_:activationDidCompleteWith:error:),例如:

func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
    if activationState == .activated {
       // Update application context here
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Watch OS 应用程序无法与 iOS 应用程序连接 的相关文章

随机推荐