0

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

4

5 回答 5

3

有可能的。

正在查看:WatchKit Doc

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

引用第一段。

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

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

据我了解,MMWormhole 对于两个二进制文件之间接近实时的数据更改非常方便。而这种方法允许访问 iPhone 应用程序保存的数据,这些数据可以被 Watch App 和 Vice Versa 读取。

于 2015-01-19T12:28:13.270 回答
3

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

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

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

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

3)通过单击名称为 group.test.demo 的 + 按钮添加容器

示例代码来实现这一点。

在您的 iPhone 应用程序代码中

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

[myDefaults setObject:@"tejas" forKey:@"name"];

现在为键“name”设置了值“tejas”

检索该代码的代码

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

[myDefaults objectForKey:@"name"];

祝你好运:)

于 2015-03-17T06:27:22.643 回答
2

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

于 2015-04-12T12:00:56.990 回答
0

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

为了克服这个问题,您需要放置数据观察者。我求助于使用 NSDistributedNotificationCenter 在应用程序和手表扩展程序之间传递一些自定义消息,但可能有更优雅的解决方案。其他人的任何想法?

于 2015-04-29T06:09:33.133 回答
0

使用手表连接。

// 1. In .m viewcontroller on phone & interface controller on iwatch
#import <WatchConnectivity/WatchConnectivity.h> 

@interface IController()<WCSessionDelegate>

@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<NSString *, id> *)message

 {

 }
于 2016-05-01T20:07:22.843 回答