The*_*per 1 objective-c ios swift apple-watch watchos-2
我正在开发Apple Watch应用程序.当iPhone上发生特定事件时,我可以从iPhone向Apple Watch发送数据.但是,我希望watch在开始运行时获取数据.我该如何处理这个问题?最有效的方法是什么?
WatchConnectivity
第一,都应该相互(iOS和watchOS)进行通信的两个类需要符合的<WCSessionDelegate>和#import所述WatchConnectivity框架
在发送数据之前,您需要检查您的设备是否能够发送数据
if ([WCSession isSupported]) {
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
NSLog(@"WCSession is supported");
}
Run Code Online (Sandbox Code Playgroud)
然后,如果您希望使用"交互式消息传递"(sendMessage API),则需要先查看是否可以访问其他设备:
if ([[WCSession defaultSession] isReachable]) {
//Here is where you will send you data
}
Run Code Online (Sandbox Code Playgroud)
"后台操作"API不需要在您调用WCSession API的时间点访问对方设备.
在应用程序之间传输数据时,您有几种选择,在Apple文档中,它们的描述如下:
使用该updateApplicationContext:error:方法仅将最新的状态信息传递给对方.当对方醒来时,它可以使用此信息更新自己的状态并保持同步.使用此方法发送新字典会覆盖以前的字典.
使用sendMessage:replyHandler:errorHandler:或sendMessageData:replyHandler:errorHandler:方法立即将数据传输到对应方.当您的iOS应用和WatchKit扩展都处于活动状态时,这些方法可用于即时通信.
使用该transferUserInfo:方法在后台传输数据字典.您发送的词典排队等待传递给对方,并在当前应用程序暂停或终止时继续传输.
使用该transferFile:metadata:方法在后台传输文件.如果要发送多个简单的值字典,请使用此方法.例如,使用此方法发送图像或基于文件的文档.
我将举例说明如何使用Application Context发送/接收数据
发送数据:
WCSession *session = [WCSession defaultSession];
NSError *error;
[session updateApplicationContext:@{@"firstItem": @"item1", @"secondItem":[NSNumber numberWithInt:2]} error:&error];
Run Code Online (Sandbox Code Playgroud)
接收数据:
- (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext {
NSLog(@"%@", applicationContext);
NSString *item1 = [applicationContext objectForKey:@"firstItem"];
int item2 = [[applicationContext objectForKey:@"secondItem"] intValue];
}
Run Code Online (Sandbox Code Playgroud)
有关WatchConnectivity的更多信息,我建议您观看WWDC2015会话视频并阅读WatchConnectivity上的Apple文档
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |