【问题标题】:How to establish a communication channel between Apple Watch Extension/App and iOS App如何在 Apple Watch Extension/App 和 iOS App 之间建立通信通道
【发布时间】:2014-11-26 08:12:58
【问题描述】:

我正在探索 WatchKit SDK。

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

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

【问题讨论】:

  • 似乎是一个广泛的问题。投票结束。
  • @trojanfoe 或许如果将其改写为如何在 Apple Watch Extension/App 和 iOS App 之间建立通信渠道会很有意义。到目前为止,还没有官方记录的方法,但在不久的将来可能会使用。
  • 谢谢,我已根据您的建议更改了标题

标签: ios iphone watchkit apple-watch


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      取自 Apple 的文档

      与您的配套 iOS 应用程序通信

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

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

      取自Apple's Developers Library

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 使用应用程序组对我不起作用.. 我从 github 运行应用程序为什么我的数据没有在手表和 iphone 之间共享??
        • 您必须从项目设置中启用应用组(需要苹果付费开发者帐户)
        【解决方案5】:

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

        https://github.com/ShinobiControls/ChartWatch

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多