Nag*_*dra 9 ios apple-watch watchkit
我想从观看应用程序向iOS应用程序发送即时消息.在XCode7 beta 4版本中实现了以下代码,并在两个模拟器中保持应用程序的前景.这是我实现的代码
在watchkit interfaceController中
-(void)willActivate
{
[super willActivate];
if ([WCSession isSupported]) {
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
}
-(IBAction)buttonClicked
{
NSDictionary *applicationDict = [[NSDictionary alloc] initWithObjects:@[@"Hi"] forKeys:@[@"key"]];
if([[WCSession defaultSession] isReachable])
{
[[WCSession defaultSession] sendMessage:applicationDict
replyHandler:^(NSDictionary *reply) {
NSLog(@"%@",reply);
}
errorHandler:^(NSError *error) {
NSLog(@"%@",error);
}];
}
}
在iOS应用程序类中
-(void)viewDidLoad
{
[super viewDidLoad];
if ([WCSession isSupported]){
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
}
-(void)session:(nonnull WCSession *)session
didReceiveMessage:(nonnull NSDictionary *)message replyHandler:(nonnull void (^)(NSDictionary * __nonnull))replyHandler
{
dispatch_async(dispatch_get_main_queue(), ^{
self.testLbl.text = [message objectForKey:@"key"];
[self.view setNeedsDisplay];
});
}
必须使用sendMessageAPI 吗?我发现它们也不可靠且不可预测。我最终使用了applicationContextAPI。手表不必可达,但如果可达,它会立即到达。如果不可到达,它会在应用程序启动时交付。每次更新应用程序上下文时,它都会覆盖以前的版本,这可能不是您想要的。
| 归档时间: |
|
| 查看次数: |
2625 次 |
| 最近记录: |