使用watchOS2中的WatchConnectivity在iOS和WatchOS之间发送消息

菲利普

我观看了WWDC2015,发现您现在可以在手表上开发本机应用程序。这打开了很多功能,我想知道如何在iOS应用程序和AppleWatch应用程序之间发送数据。

我看到有一个名为WatchConnectivity的新框架。来回发送数据时,该如何使用?我有哪些选择?

菲利普

手表连通性

第一,都应该相互(iOS和watchOS)需要进行通信的两个类,以符合该<WCSessionDelegate>#import所述WatchConnectivity框架

在发送数据之前,您需要检查设备是否能够发送数据

if ([WCSession isSupported]) {
      WCSession *session = [WCSession defaultSession];
      session.delegate = self;
      [session activateSession];
      NSLog(@"WCSession is supported");
}

然后,如果您希望使用“交互式消息传递”(sendMessage API),则需要先查看其他设备是否可访问:

if ([[WCSession defaultSession] isReachable]) {
    //Here is where you will send you data
}

“后台操作” API不需要在您调用WCSession API时及时访问对方设备。

在应用程序之间传输数据时,您有几种选择,在Apple文档中,它们的描述如下:

  • 使用该updateApplicationContext:error:方法仅将最新状态信息传递给对方。当对方唤醒时,它可以使用此信息更新自己的状态并保持同步。使用此方法发送新词典将覆盖以前的词典。

  • 使用sendMessage:replyHandler:errorHandler:sendMessageData:replyHandler:errorHandler:方法将数据立即传输到对方。当您的iOS应用程序和WatchKit扩展都处于活动状态时,这些方法旨在立即进行通信。

  • 使用该transferUserInfo:方法可以在后台传输数据字典。您发送的字典排队等待传递给对方,并且在当前应用被暂停或终止时,传输继续进行。

  • 使用该transferFile:metadata:方法在后台传输文件。如果您要发送的不仅仅是简单的值字典,请使用此方法。例如,使用此方法发送图像或基于文件的文档。

我将为您提供一个示例,说明如何使用“应用程序上下文”发送/接收数据

发送数据:

WCSession *session = [WCSession defaultSession];
NSError *error;

[session updateApplicationContext:@{@"firstItem": @"item1", @"secondItem":[NSNumber numberWithInt:2]} error:&error];

接收数据:

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

    NSLog(@"%@", applicationContext);


    NSString *item1 = [applicationContext objectForKey:@"firstItem"];
    int item2 = [[applicationContext objectForKey:@"secondItem"] intValue];
}

有关WatchConnectivity的更多信息,我真的建议您观看WWDC2015会话视频并阅读有关WatchConnectivityApple文档。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章