【问题标题】:settings bundle not working on watchOS 2设置包在 watchOS 2 上不起作用
【发布时间】:2015-12-14 19:33:30
【问题描述】:

这在 watchOS 1 上不是问题,但现在在 watchOS 2 上我无法读取手表扩展上的值。

根据Apple docs,是可以的。 根据this thread 上的一些人的说法,这是可能的。 据this thread 上的苹果员工称,这是可能的。

据我所知,我正在正确设置所有内容:

  • 我在 iOS 应用和手表扩展上启用了应用组 相同的标识符。
  • 我将 Settings-Watch.bundle 添加到 iOS 应用程序 并添加了ApplicationGroupContainerIdentifier plist 的标识符

当我使用标识符作为套件名称初始化 NSUserDefaults 对象时,我无法读取手表扩展上的值。我可以在 iOS 应用程序上阅读它们。这发生在模拟器和真实设备中。

请不要发布有关如何使用 Watch Connectivity 执行此操作的答案。 可以在没有 Watch Connectivity 的 watchOS 2 上仅使用共享应用程序组来执行此操作,人们可以做到这一点,而这里直接出自docs

在 watchOS 2 中,您的 WatchKit 扩展可以读取首选项的值,但您不能写入新值。 watchOS 2 中的首选项会从 iOS 转发到 Apple Watch,但您所做的任何修改都不会发送回 iOS。

【问题讨论】:

  • 您能否发布一个有关您如何尝试读取设置包的示例?
  • 我也在手表上试过这个,我可以确认问题仍然存在! (启用组,具有适当的配置文件和设置)

标签: ios nsuserdefaults watchkit ios-app-group


【解决方案1】:

我已经编辑了我的答案。之前,它谈到了无法使用应用组在 watchOS 2 中同步数据,但您的具体问题是关于设置包,它仍然从 iOS 同步到 watchOS 2 中的 Apple Watch。

我无法让它在模拟器中的 Xcode 7.1 / 7.2 中运行,但它确实可以在真实设备上运行。来自文档:

watchOS 2 中的首选项会从 iOS 转发到 Apple Watch,但您所做的任何修改都不会发送回 iOS。在 watchOS 1 中,WatchKit 扩展可以直接访问默认数据库并且可以读取和写入值。

所有 3 个目标都应配置相同的 App Group(此处的 Watch App 目标似乎是 OPs 问题中缺少的组件):

我的设置包:

InterfaceController.swift中的一些简单界面代码:

@IBOutlet var label: WKInterfaceLabel!

@IBAction func buttonAction() {

    let sharedDefaults = NSUserDefaults.init(suiteName: "group.testSettings")
    let name_preference = String(sharedDefaults?.objectForKey("name_preference"))
    self.label.setText(name_preference)
}

以及最终结果:

所以,它确实按预期工作,只是在模拟器中没有。似乎模拟器中的两个设备之间发生了一些隔离,试图准确了解那里发生的事情有点令人沮丧。

【讨论】:

  • 引用文本的第一块正是我所说的。 “watchOS 2 中的首选项从 iOS 转发到 Apple Watch”。如果这不是一个彻头彻尾的谎言,他们为什么要写这个?
  • 还请查看我修改后的问题,我将链接指向 Apple 员工表示可能的线程。
  • 这很有趣,我正在尝试与您一起解决它:) 您指的是这句话,是吗? “不过有一个例外,那就是设置包。它会自动从 iPhone 同步到 Watch。”似乎设置包应该仍然被推送到 Apple Watch。
  • 正确。在我链接的其他线程之一中,人们说它对他们有用。
  • 错误报告页面有一个错误,它在无限加载我的票时卡住了..lol
【解决方案2】:

【讨论】:

  • 请停止发布建议使用 WatchConnectivity 的答案。该线程的重点是使用共享应用程序组使该进程正常工作,而无需任何 WatchConnectivity 代码。是的,这是可能的。
【解决方案3】:

这是因为应用程序现在在 Apple Watch 上原生运行,这意味着它们无法从 iPhone 获取设置,因为设置不再存储在同一设备上。更多信息在这里:Unable to get values from settings bundle in watchOS 2

【讨论】:

  • 您的回答不适用于这种情况。阅读我在问题中引用的线程。
  • 等等,什么?当这个问题的信息少得多时,我的答案就发布了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2019-06-09
相关资源
最近更新 更多