我只是用iOS 11 SDK重建了我的应用程序,试图删除blue banner现在总是出现的应用程序。我以为“很棒,那很成功”,只是发现定位服务现在根本无法正常工作。
blue banner
该应用程序过去曾与iOS 10配合使用-有人听到了吗?
看来苹果已经添加了另一个隐私功能。用户现在可以覆盖我们requestAlwaysAuthorization并将其降级为requestWhenInUseAuthorization-这意味着作为开发人员,我们现在必须在Info.plist
requestAlwaysAuthorization
requestWhenInUseAuthorization
Info.plist
我发现他们已经添加了新密钥 NSLocationAlwaysAndWhenInUseUsageDescription
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文件中找到的注释直接矛盾。因此,我创建了一个雷达。
CLLocationManager.h
好消息,如果您遵循调试控制台IE的建议。添加新密钥NSLocationAlwaysAndWhenInUseUsageDescription和旧密钥之一NSLocationWhenInUseUsageDescription,Locations服务将再次开始工作。
NSLocationWhenInUseUsageDescription