观看操作系统应用程序无法连接到iOS应用程序
我正在尝试将我的Watch OS应用程序与iOS应用程序连接,并获取一些数据,但在尝试连接iOS应用程序时出现以下错误: [WC]\uuU 28-[WCSession activateSession]\u block\u invoke\u 2 sessionReadyForInitialStateWithCompletionHandler由于NSXPCConnection中断而失败 __44-[WCSession updateApplicationContext:错误:][u块\调用失败,因为WCErrorCodeSession未激活 尚未激活WatchConnectivity会话 iOS应用程序代码:观看操作系统应用程序无法连接到iOS应用程序,ios,objective-c,swift,watchkit,Ios,Objective C,Swift,Watchkit,我正在尝试将我的Watch OS应用程序与iOS应用程序连接,并获取一些数据,但在尝试连接iOS应用程序时出现以下错误: [WC]\uuU 28-[WCSession activateSession]\u block\u invoke\u 2 sessionReadyForInitialStateWithCompletionHandler由于NSXPCConnection中断而失败 __44-[WCSession updateApplicationContext:错误:][u块\调用失败,因为W
- (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应用程序在目标C中,手表应用程序在swift中
我首先执行iOS应用程序代码,它的委托方法会运行,但当我运行watch os应用程序时,它无法执行任何委托方法,并产生上述错误。从watch os v2.2开始运行activate()
方法。因此,在您的代码中,仅在调用activate()
之后调用updateApplicationContext
并不能保证在尝试更新应用程序上下文时会话将被实际激活
正确的流程是将您的消息移动到会话(\uu:activationIDCompleteWith:error:)
,例如:
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
if activationState == .activated {
// Update application context here
}
}
我现在在委托方法中使用它,但它没有被调用,我不断地得到上面给出的错误。会话在watch os应用程序中未被激活,尽管它在iPhone应用程序中被激活。@pankaj您在手表上的什么地方调用startSession()?我在我的界面的willActivate()方法中调用它?有什么更新吗?我对watchOS 2和iOS应用程序也有同样的问题。嗨,Pankaj,你能解决这个问题吗。我在iOS 13和watchOS 6上遇到了同样的错误。我的iOS应用程序可以将session.updateApplicationContext()转换为watch应用程序。但是从手表应用程序到iOS应用程序,我得到了7018错误代码。这在模拟器和物理设备中都会发生。我还清理了构建文件夹并重新启动了计算机。