如何build立Apple Watch Extension / App和iOS App之间的沟通渠道

我正在探索WatchKit SDK。

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

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

您可以使用App Group和sharedDefaults在WatchApp / Extension和手机上的App之间共享数据。 请参阅示例: WatchKit SDK不从NSUserDefaults中检索数据

研究iOS8 Extension / App Groups / sharedDefaults和watchkit extension会更有意义。

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

https://github.com/ChrisGrant/ChartWatch

这一个使用multipeer连接有手表通话。

https://github.com/jsclayton/swatches

但这使用蓝牙,我认为手表操作系统也使用蓝牙与手机通信,所以不知道他们是否都将被允许。

我们还没有设备可以testing,所以/ swatches应用程序只是看simuator与iPhone模拟器在同一个mac上交谈。

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

其他样品

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

有几个解决scheme: CoreDataNSKeyedUnarchiverNSUserDefaults 。 通过共享公共数据资源(数据库,文件或用户默认设置)的共同背景,可以在两个目标项目属性上启用应用程序组function

在这里输入图像说明

在下面的文章中解释了如何使用默认设置来完成它,你也可以下载演示项目。

有了watchOS2,Apple支持Watch Connectivity Framework将手表扩展信息传递给应用程序,反之亦然。

从苹果的文档中获取

与您的伴侣iOS应用程序通信

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

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

从苹果开发者图书馆采取

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

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

看起来像与brain.clear的链接并不指向ShinobiChart示例的正确目的地

https://github.com/ShinobiControls/ChartWatch