Swift3 NSLocationAlwaysUsageDescription和NSLocationWhenUsageDescription被忽略

Swift3 NSLocationAlwaysUsageDescription和NSLocationWhenUsageDescription被忽略,swift3,cllocationmanager,xcode8,Swift3,Cllocationmanager,Xcode8,Xcode 8.2 beta 8C30a,Swift 3,iPhone 5s 我正在编写一个天气应用程序,希望使用iPhone的位置。为了获得授权,我已设置(所有)以下我的Info.plist: <key>NSLocationAlwaysUsageDescription</key> <string>Your current location is used to provide you with a local weather forecast.</st

Xcode 8.2 beta 8C30a,Swift 3,iPhone 5s

我正在编写一个天气应用程序,希望使用iPhone的位置。为了获得授权,我已设置(所有)以下我的
Info.plist

<key>NSLocationAlwaysUsageDescription</key>
<string>Your current location is used to provide you with a local weather forecast.</string>
<key>NSLocationUsageDescription</key>
<string>Your current location is used to provide you with a local weather forecast.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your current location is used to provide you with a local weather forecast.</string>

钥匙在那里,但看不见。手机的“设置”菜单(或“隐私”下)中没有应用程序条目。毫无疑问,我错过了一些简单的事情。有什么想法吗?

我只是在一个特定的应用程序中遇到了相同的问题,我有几个具有相同结构的应用程序,当我请求位置服务授权时,它们工作正常

在所有情况下,我都对应用程序进行了本地化,因此我的XCode项目中有几个Info.plist文件(例如,一个用于基础语言,即英语,另一个用于法语,等等)

我总是手动编辑我的Info.plist文件(将其视为“源代码”),并添加NSLocationWhenUsageDescription字段)

但是在这个特定的应用程序中,当我在项目的目标列表中选择应用程序目标,然后单击“信息”选项卡时,我注意到XCode没有显示NSLocationWhenUsageDescription字段。这很奇怪,因为当我在其他XCode项目中选中“Info”选项卡时,对基本语言的Info.plist文件所做的编辑会出现在这里。因此,我手动将NSLocationWhenUsageDescription字段添加到这个“信息”UI中,突然我的新应用程序工作正常,请求用户在使用时允许访问位置服务

我建议检查添加到Info.plist文件的所有字段是否反映在Target/Info屏幕中。如果不是,您可能会遇到类似的问题,在这种情况下,相同的修复方法可能适用于您

我猜问题的根本原因是本地化过程中的一个bug。我记得,在选择Info.plist文件作为本地化文件之一后,我在构建时从XCode得到一个错误,抱怨它缺少一个Info.plist文件(当它“本地化”文件时,它已将Info.plist从base.lproj文件夹移到en.lproj)。我恢复了XCode从base.lproj文件夹移动到en.lproj文件夹的文件,这似乎让XCode再次感到高兴。但我认为不知何故,它失去了刷新自身的能力,因此对Info.plist文件的后续添加并没有被应用到任何需要的地方

This app has attempted to access privacy-sensitive data without a usage description.
The app's Info.plist must contain an NSLocationWhenInUseUsageDescription key
with a string value explaining to the user how the app uses this data