WatchOS 3:为什么WCSession永远不会在iPhone上激活?

时间:2017-06-02 03:07:20

标签: ios objective-c watch-os-3

我正在创建一个简单的应用程序,涉及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");
}

1 个答案:

答案 0 :(得分:0)

好的,我想出来了。

我重启iPhone,让WCSession在手机上工作。不得不取消配对,然后重新配对。

现在正在运作。胡说八道......