如何使用群组在iPhone和Apple Watch之间共享数据?

4

我是Watchkit开发的新手,在iPhone和iWatch之间无法找到共享数据的解决方案,请帮助我。我想使用群组来共享数据。

2个回答

10

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

iWatch 基本上无法进行任何处理,因此我们需要共享数据。我们可以使用 NSUserDefaults 共享数据。

但为此,您需要在项目目标和 iwatch 应用程序目标的能力部分启用 Appp Groups,如下所示

App Groups

以下是实现此目的的示例代码。

在您的 viewController 或 appDelegate 文件中添加以下代码:

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

基本上,您正在为"name"变量设置值为"aadil"

下一步是编写以下代码来检索它

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

希望这能帮到您 :)


我需要将最后两行代码放在通知.m文件中才能在iWatch上收到警报吗? - Krutarth Patel
是的,你可以把它放在.m文件中,但你需要打开你的模拟器和控制器。 - Aadil Keshwani
谢谢。如何在iwatch模拟器中显示当前位置?有没有代码或链接? - Krutarth Patel
iWatch没有获取当前位置的能力,但iPhone具有该功能,因此您需要从iPhone获取位置,并通过组将经纬度传递到iWatch,然后使用该数据在iWatch上显示地图中的当前位置。 - Aadil Keshwani

5

警告!已经不再支持WatchOS 2,现在需要使用WatchConnectivity框架中的方法。最好的方法是updateApplicationContext:它可以始终保持最新的数据。苹果文档中提到:

在watchOS 2中,使用共享组容器与其iOS应用程序共享数据的手表应用程序必须重新设计以以不同的方式处理数据。对于实际上由两个应用程序共享和更新的数据,这需要使用Watch Connectivity框架将该数据在它们之间移动。


有没有其他方法可以做到这一点。在我的情况下,如果用户第一次从iPhone应用程序登录且手表未运行,则无法使用发送消息将登录数据发送到手表。我需要先启动手表应用程序,然后打开iPhone应用程序并登录它们。这相当糟糕。有没有其他选择? - Tejas Ardeshna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接