如何在Apple Watch Extension / App和iOS App之间建立通信渠道

时间:2014-11-26 08:12:58

标签: ios iphone watchkit apple-watch

我正在探索WatchKit SDK。

当我有一个WatchKit应用程序时,是否可以从WatchKit应用程序上的iPhone应用程序设置值(例如文本,设置)?我可以从iPhone应用程序调用WatchKit应用程序扩展中的函数吗?

如果有人设法做到这一点,他/她可以发布一个例子吗?谢谢!

5 个答案:

答案 0 :(得分:9)

您可以使用App Group和sharedDefaults在手机上的WatchApp /分机和应用程序之间共享数据。 看例子: WatchKit SDK not retrieving data from NSUserDefaults

研究iOS8 Extension / App Groups / sharedDefaults和watchkit扩展将更有意义。

此示例从Shinobi图表中获取UIImage,将其保存为默认值为image。 然后,扩展程序会通过默认值选择图像并在手表上显示

https://github.com/ChrisGrant/ChartWatch

这个使用多重连接来与手机进行通话。

https://github.com/jsclayton/swatches

但这使用蓝牙,我认为Watch OS也使用蓝牙与手机通信,所以不确定是否允许它们。

我们还没有可以测试的设备,所以/ swatches应用程序只是在同一台Mac上观看模拟器与iphone模拟器通话。

如果您曾经进行过低级别的AV编程,您就会知道应用程序可能在模拟器上运行但在设备上失败,因为模拟器可能会欺骗使用Mac OSX媒体层。对于蓝牙可能是一样的。

其他样本

https://github.com/search?q=WKInterfaceController&type=Code

答案 1 :(得分:3)

有几种解决方案: CoreData NSKeyedUnarchiver NSUserDefaults 。通过共享公共数据资源(数据库,文件或用户默认设置)的通用背景,这将在两个目标项目属性上启用应用程序组功能

enter image description here

在下面的post中解释了如何使用默认设置执行此操作,您还可以下载演示项目。

答案 2 :(得分:3)

借助watchOS2,Apple现在支持Watch Connectivity Framework将信息从手表扩展程序传递到应用程序,反之亦然。

取自Apple的文档

与您的Companion iOS应用程序进行通信

Watch Connectivity框架可让您在WatchKit扩展程序与配套iOS应用程序之间创建双向通信渠道。使用此通道协调两个进程之间的活动。例如,您可以使用此框架将更新的信息从iOS应用推送到WatchKit扩展。该框架提供了在后台或两个应用程序都处于活动状态时传输数据的选项,并替换了WKInterfaceController类的现有openParentApplication:reply:方法。

有关Watch Connectivity框架的更多信息,请参阅Watch Connectivity Framework Reference

取自Apple's Developers Library

答案 3 :(得分:2)

你可以看到这个库 https://github.com/mutualmobile/MMWormhole

它在iOS应用和扩展程序之间传递消息。

答案 4 :(得分:1)

看起来与brain.clear的链接没有指向ShinobiChart示例的正确目的地

https://github.com/ShinobiControls/ChartWatch