有没有官方的方式在Apple Watch和iPhone之间传递数据?

我想知道除了MMWormhole还有其他任何方式可以在iPhone和Apple Watch之间传递基本数据。 你知道现有的官方Apple框架是否允许这样做吗?

有可能的。

看看: WatchKit Doc的

手表应用程序和iPhone上的扩展程序之间有一段关于共享数据的段落。

引用第一段。

与包含iOS应用程序共享数据

如果您的iOS应用和WatchKit扩展程序依赖于相同的数据,请使用共享应用程序组来存储该数据。 应用程序组是多个进程可以访问的安全容器。 由于您的WatchKit扩展和iOS应用程序在不同的沙箱环境中运行,因此它们通常不共享文件或直接相互通信。 应用程序组允许两个进程在它们之间共享文件或用户默认信息。

根据我的理解,MMWormhole可以很方便地接收2个二进制文件之间的实时数据变化。 而这种方法允许访问iPhone应用程序保存的数据,Watch App和Vice Versa可以读取这些数据。

我们可以使用组在iPhone和iWatch之间传递数据。

基本上我们可以使用NSUserDefaults共享数据。

但是为此您需要启用它,请参阅以下步骤:1)在项目目标中打开function部分

2)从该部分打开应用程序组

3)点击名为group.test.demo的+按钮添加容器

示例代码来实现这一点。

在您的iPhone应用程序代码中

NSUserDefaults *myDefaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.test.demo"]; [myDefaults setObject:@"tejas" forKey:@"name"]; 

现在值“tejas”设置为键“名称”

用于检索它的代码

  NSUserDefaults *myDefaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.test.demo"]; [myDefaults objectForKey:@"name"]; 

祝你好运:)

如果您查看WKInterfaceController的文档,您将找到一个名为openParentApplication:reply:的方法openParentApplication:reply:允许您在后台与主机应用程序进行通信。

如上所述,我使用了共享应用程序组并将核​​心数据文件放在该组中。 使用这种技术,手机应用程序和手表都可以读取和写入相同的数据,并且当它们分散运行时一切都很好。 由于每个进程都在单独的沙箱中运行,因此会遇到可能会覆盖来自不同源的数据的经典分布式数据库问题。

要解决这个问题,您需要将数据观察器放在适当的位置。 我使用NSDistributedNotificationCenter在应用程序和手表扩展之间传递一些自定义消息,但可能有更优雅的解决方案。 别人的想法?

使用手表连接。

 // 1. In .m viewcontroller on phone & interface controller on iwatch #import  @interface IController() @end if ([WCSession isSupported]) { WCSession *session = [WCSession defaultSession]; session.delegate = self; [session activateSession];} // 2. Send Message - Phone or iWatch: [[WCSession defaultSession] sendMessage:response replyHandler:^(NSDictionary *reply) { NSLog(@"%@",reply); } errorHandler:^(NSError *error) { NSLog(@"%@",error); } ]; // 3. Receive Message - Phone or iWatch - (void)session:(WCSession *)session didReceiveMessage: (NSDictionary *)message { }