WatchOS 和位置权利

WatchOS and location entitlement

我一直致力于将 watchapp 添加到应用商店中已有的健身追踪器中。过去,我已经能够将它加载到我的身体 phone 上并且毫无问题地观看。

我最近在手表应用程序中添加了位置跟踪功能,这样我就可以跟踪用户 run/biked 的路径,并在他们查看锻炼时在 phone 上向他们展示。自从这样做以来,当我尝试将应用程序加载到我的 phone 时,我一直收到来自 Xcode 的错误;我认为这些是预期的错误,但我无法从 Xcode 的 docs/interface 和 developer.apple.com 中理解在哪里进行修复。

我已经在手表应用授权文件中添加了授权:

如错误所述,我已切换到手动签名并生成了新的配置文件,但我遇到了同样的错误。我在 developer.apple.com 的配置文件中看不到添加定位功能的地方:

配置文件获得授权的唯一途径似乎是来自 Xcode,因为 developer.apple.com 中没有添加它的地方?这似乎是错误的,并且在任何情况下都不起作用。我没有在 Xcode 文档中为我的案例找到帮助(或者我找错了地方)。任何帮助将不胜感激。

您使用的是最新的 Xcode 吗?您是否在目标菜单中设置了权利?根据我的记忆,他们现在都有开关。完成后,通常 Xcode 可以为您解决签名问题。如果您查看 Xcode 中的签名部分,是否表明那里存在签名问题? (在尝试解决签名问题时,您是否至少重新启动了一次 Xcode?)

请注意,位置授权应该在您的 WatchKit 扩展上,而不是在 Watchkit 应用程序上。

查看 Capabilities 选项卡(它是用于控制 Entitlements 的选项卡,因此您不必直接编辑 plist。)

您是否尝试过创建一个新项目来测试它是否有效?您的屏幕截图与我在 Xcode 中看到的 WatchKit 应用程序的目标命名不匹配。在 Xcode 10.1 中,WatchKit App plist 编辑器将显示 'app name' WatchKit App,扩展 plist 编辑器将显示 'appname' WatchKit Extension。我看到您的屏幕截图显示 'blank' Watchapp Extension。可能您编辑了项目名称,这不是问题?另一件要验证的事情是 plist 没有损坏。

我在 iOS 和 watchOS 上使用定位服务,但我在两个授权文件中都没有与之相关的内容。 docs 说:

Set entitlement values in order to enable iCloud, push notifications, Apple Pay, and App Sandbox.

他们没有提到定位服务。

因此,删除位置授权并重新启用自动签名可能就足够了。

当然,你必须在你的iOSinfo.plist中设置,根据需要,NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription,以及你的手表扩展名 info.plist NSLocationWhenInUseUsageDescription.