我在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 {
//
}
我的问题是:
activationDidCompleteWithState永远不会被调用。
我正在调用updateContext方法以将数据发送到监视应用程序,但从没在InterfaceController中调用didReceiveApplicationContext方法。
最佳答案
您必须将WCSession对象保留在成员变量中。
@property (nonatomic, strong) WCSession* wcSession;
...
if ([WCSession isSupported])
{
self.wcSession = [WCSession defaultSession];
self.wcSession.delegate = self;
[self.wcSession activateSession];
}