WatchOS 和位置权利

Posted

技术标签:

【中文标题】WatchOS 和位置权利【英文标题】:WatchOS and location entitlement 【发布时间】:2018-12-21 21:32:37 【问题描述】:

我一直在努力将手表应用添加到我在应用商店中已有的健身追踪器中。过去,我已经能够将它加载到我的实体手机上并毫无问题地观看。

我最近在手表应用中添加了位置跟踪功能,这样我就可以跟踪用户跑步/骑行的路径,并在他们查看锻炼时在手机上显示给他们看。从那以后,当我尝试将应用程序加载到我的手机时,我一直从 Xcode 收到错误;我认为这些是预期的错误,但我无法从 Xcode 和 developer.apple.com 的文档/界面中理解在哪里进行修复。

我已在手表应用权利文件中添加权利:

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

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

【问题讨论】:

【参考方案1】:

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

设置权利值以启用 iCloud、推送通知、 Apple Pay 和应用沙盒。

他们没有提到定位服务。

因此,删除位置权利并再次启用自动签名可能就足够了。

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

【讨论】:

就是这样。 watchapp.extension 没有位置权利。我在权利文件中删除了这一行,并且能够在我的手机/手表上运行,我可以看到手表已经记录了位置数据。谢谢!【参考方案2】:

您使用的是最新的 Xcode 吗?您是否在目标菜单中设置了权利?据我所知,它们现在都有切换功能。一旦你这样做了,通常 Xcode 可以为你解决签名问题。如果您查看 Xcode 中的签名部分,是否表明那里存在签名问题? (在尝试解决签名问题时,您是否至少重新启动了一次 Xcode?)

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

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

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

【讨论】:

是的,是的。我的原始帖子中有签名问题错误消息的屏幕截图。我尝试重新启动 Xcode,没有帮助。 嗯,您的权利屏幕截图是“plist”视图,而不是带有滑块的用户界面权利屏幕。您在安装时看到这些选项了吗? 在我的答案中添加了有关设置权利的界面的详细信息。

以上是关于WatchOS 和位置权利的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 和 watchOS 之间共享课程

WatchOS 4 未收到后台 GPS 更新

watchOS 如何找到主情节提要文件?

watchOS 如何找到主情节提要文件?

WatchOS开发教程之五: 通知功能开发

WatchOS开发教程之五: 通知功能开发