起因
用户群反馈app可能请求了不合适的定位权限:始终定位。
看到这个截图,根据经验判断可能是后台定位功能导致可能不得不请求始终定位权限。再加上之前提交审核时,苹果要求在plist文件中新增NSLocationAlwaysAndWhenInUseUsageDescription和NSLocationAlwaysUsageDescription键值对。猜测可能是对某些点的理解混淆了,因为这种用户体验的确不好。
解决思路
因为此项目是前同事遗留代码,自从接手后迭代次数比较有限。于是计划根据以下步骤进行排查和验证:
查现有代码和plist文件
查官方文档
改工程代码
提交审核,查看邮件提醒
app退入后台,查看定位信息是否输出
查plist文件和权限请求代码
plist文件
以下键都已加入:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSLocationAlwaysAndWhenInUseUsageDescription
权限请求代码
全局搜索request,找到定位权限请求代码,发现
if ([_locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[_locationManager requestAlwaysAuthorization];
}
查官方文档
plist文件配置
NSLocationAlwaysUsageDescription
Discussion
Use this key if your iOS app accesses location information in the background, and you deploy to a target earlier than iOS 11. In that case, add both this key and NSLocationAlwaysAndWhenInUseUsageDescription to your app’s Info.plist file with the same message. Apps running on older versions