一尘不染

定位服务在iOS 11中不起作用

swift

我只是用iOS 11 SDK重建了我的应用程序,试图删除blue banner现在总是出现的应用程序。我以为“很棒,那很成功”,只是发现定位服务现在根本无法正常工作。

该应用程序过去曾与iOS 10配合使用-有人听到了吗?


阅读 271

收藏
2020-07-07

共1个答案

一尘不染

看来苹果已经添加了另一个隐私功能。用户现在可以覆盖我们requestAlwaysAuthorization并将其降级为requestWhenInUseAuthorization-这意味着作为开发人员,我们现在必须在Info.plist

我发现他们已经添加了新密钥 NSLocationAlwaysAndWhenInUseUsageDescription

/*
*      Either the NSLocationAlwaysAndWhenInUseUsageDescription key or both the
*      NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription
*      keys must be specified in your Info.plist; otherwise, this method will do
*      nothing, as your app will be assumed not to support Always authorization.
*/

但是,使用此新密钥后,位置服务仍然无法正常工作,在进一步搜索后,我发现此gem与所有其他调试信息混合在一起:

这个应用程式已尝试存取没有使用说明的隐私权敏感资料。应用程序的Info.plist必须同时包含NSLocationAlwaysAndWhenInInUseUsageDescription和NSLocationWhenInInUseUsageDescription键,并带有向用户说明该应用程序如何使用此数据的字符串值

这与我在更新CLLocationManager.h文件中找到的注释直接矛盾。因此,我创建了一个雷达。

好消息,如果您遵循调试控制台IE的建议。添加新密钥NSLocationAlwaysAndWhenInUseUsageDescription和旧密钥之一NSLocationWhenInUseUsageDescription,Locations服务将再次开始工作。

2020-07-07