【问题标题】:Pass text from iOS label to WatchOS label - swift-将文本从 iOS 标签传递到 WatchOS 标签 - swift-
【发布时间】:2017-11-24 04:53:47
【问题描述】:

我的应用程序有问题。我尝试遵循 Passing data to Apple Watch app 之类的指南,但我不确定它是否适合我的情况。 我的 iOS 应用程序上有一些带有文本的标签,然后我想在我的 watchOS 应用程序标签上显示此文本,但我不知道哪种是传递此文本并使其与 iOS 应用程序保持同步的最佳方式。 非常感谢您的帮助!

【问题讨论】:

    标签: ios swift xcode apple-watch watchos-2


    【解决方案1】:

    对于 watchOS1,由于 Watch App 已作为 extension 包含在您的 Host App 中。因此,您可以使用App Group 在您的Host App 和您的App Extension 之间共享数据。

    有关使用App Groups 的更多信息,请参阅https://stackoverflow.com/a/44654185/5716829

    【讨论】:

    • 自从watchOS2 推出以来,Watch 应用不再是简单的应用扩展,因此无法访问App Group 中的数据。见this answer。请更新您的答案以反映您的解决方案仅适用于watchOS1
    【解决方案2】:

    从 watchOS2 开始,除了 WatchConnectivity 框架之外,您没有任何内置函数可以在 iOS 和 watchOS 应用程序之间进行通信。

    根据您问题中提供的信息,updateApplicationContext(_:) 函数似乎是解决您问题的最佳方法。您可以使用此功能发送数据字典,系统会尝试确保在您的应用程序显示给用户之前接收到数据。如果在应用对用户可见(在前台运行)之前多次调用该函数,系统会覆盖以前的数据,因此 Watch 应用只接收要显示的最新数据。

    【讨论】:

    • 我理解这个概念,但是你有实际的例子可以让我开始吗?
    • 如果您不知道从哪里开始,请查看 Apple 的示例代码(即 PotLoc),但 WCSession 文档解释了如何设置框架以及您所需要的一切要做的是在两个应用上实现发送和接收功能。
    • 我试着看一下 potloc 的例子,但我什么都不懂.. 相反..for updateApplicationContext(_:),我必须在哪里调用它?
    • 您应该在更新 iOS 应用上的标签后立即调用它,并将代表当前 label.text 的更新后的字符串发送到您的 Watch 应用。
    • 我尝试了一些东西,但似乎我不必只添加 2 或 3 行,似乎我必须添加诸如会话之类的东西,或其他东西..我不是能够在我的搜索中找到任何完整代码的示例..
    【解决方案3】:

    正确的方法是WCSession.updateApplicationContext(_ applicationContext: [String : Any])https://developer.apple.com/documentation/watchconnectivity/wcsession/1615621-updateapplicationcontext“发送一个配对和活动设备可以用来同步其状态的值字典。”

    【讨论】:

    • 我理解这个概念,但是你有实际的例子可以让我开始吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 2013-09-20
    • 2013-05-09
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多