我正在创建一个简单的应用程序,涉及Apple Watch和iPhone之间的通信。
目前使用带有WatchOS 3.2.2的iPhone 6s(10.3.2)
我无法让两者进行沟通,我相信我的问题是WCSession不会在iPhone上激活。
当WatchOS代码运行时,控制台会按预期打印出“activationDidCompleteWithState”,表示WCSession已被激活(参见下面的代码)。
但是,在iOS端,“activationDidCompleteWithState”方法永远不会打印到控制台。如果我尝试将手表中的消息发送到手机,它们会超时并出现以下错误:
[WC] - [WCSession onqueue_handleMessageCompletionWithError:withMessageID:] 109FE5D2-6218-4D67-AFD7-E72FA7E4A22E由于WCErrorCodeTransferTimedOut-> IDSErrorTypeTimedOut-> IDSResponseTimedOut
我相信WCSession从未在手机上激活过。有人见过这个问题吗?我为此疯狂......
我之前使用WatchOS 2构建了它,它运行良好。不知何故,对WatchOS 3的更新让我感到高兴。任何帮助都会受到赞赏。
AppDelegate.m中的iOS代码:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([WCSession isSupported])
{
WCSession* session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
return YES;
}
- (void)session:(WCSession *)session activationDidCompleteWithState:(WCSessionActivationState)activationState
error:(NSError *)error
{
NSLog(@"PHONE - activationDidCompleteWithState");
}
ExtensionDelegate.m中的WatchOS代码:
@implementation ExtensionDelegate
- (void)applicationDidFinishLaunching
{
if ([WCSession isSupported])
{
WCSession* session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
}
- (void)session:(WCSession *)session activationDidCompleteWithState:(WCSessionActivationState)activationState
error:(NSError *)error
{
NSLog(@"activationDidCompleteWithState");
}
答案 0 :(得分:0)
好的,我想出来了。
我重启iPhone,让WCSession在手机上工作。不得不取消配对,然后重新配对。
现在正在运作。胡说八道......