WCSession激活会话未调用委托方法

问题描述 投票:0回答:1

我在Manager类的init方法中编写了此代码。

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

还可以在管理器类中实现这些委托方法。

- (void)session:(WCSession *)session activationDidCompleteWithState:(WCSessionActivationState)activationState error:(NSError *)error {
    if(error) {
        NSLog(@"%@", error.description);
    }

    NSLog(@"iOS App Session activated.");
}

- (void)sessionDidBecomeInactive:(nonnull WCSession *)session {
    //
}


- (void)sessionDidDeactivate:(nonnull WCSession *)session {
    //
}

- (void)sessionReachabilityDidChange:(WCSession *)session {
    //
}

观看应用程序InterfaceController委托方法:

- (void)session:(WCSession *)session didReceiveApplicationContext:(NSDictionary<NSString *,id> *)applicationContext {
    //
}

我的问题是:

  1. activationDidCompleteWithState永远不会被调用。
  2. 我正在调用updateContext方法以将数据发送到监视应用程序,但是didReceiveApplicationContext方法从未在InterfaceController中被调用。
ios objective-c session watchkit wcsession
1个回答
0
投票

您必须将WCSession对象保留在成员变量中。

@property (nonatomic, strong) WCSession* wcSession;
...

if ([WCSession isSupported])
{
    self.wcSession = [WCSession defaultSession];
    self.wcSession.delegate = self;
    [self.wcSession activateSession];
}
© www.soinside.com 2019 - 2024. All rights reserved.