xctest 此应用试图在没有使用说明的情况下访问隐私敏感数据
Posted
技术标签:
【中文标题】xctest 此应用试图在没有使用说明的情况下访问隐私敏感数据【英文标题】:xctest This app has attempted to access privacy-sensitive data without a usage description 【发布时间】:2017-05-15 14:21:56 【问题描述】:我正在尝试使用单元测试 (xctest) 测试 CoreLocation,但未能通过权限阶段。我特别收到一条假定的错误消息, 见下文(*)。
我正在调整 authorizationStatus 方法,但这对我不起作用。
[MySwizzler swizzleClass:[CLLocationManager class]
method:@"authorizationStatus"
instanceMethod:NO];
+ (CLAuthorizationStatus)override_authorizationStatus
return myAuthorizationStatus;
只要我请求授权:
[[self locationManager] requestWhenInUseAuthorization];
我收到回调:
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
状态为:
kCLAuthorizationStatusRestricted
我的 swizzled 方法永远不会被调用,我在日志中收到这条消息:
(*) “此应用试图在没有使用说明的情况下访问隐私敏感数据。该应用的 Info.plist 必须包含一个 NSLocationWhenInUseUsageDescription 键,其字符串值向用户解释应用如何使用此数据”。
我的 Plist 确实包含以下内容:
<plist version="1.0">
<dict>
<key>NSLocationUsageDescription</key>
<string>Required</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Required</string>
</dict>
</plist>
并且我的 TestTarget Info.plist 属性设置为 Plist 的路径
文件。
方案运行配置设置为“允许位置
模拟”
我假设我在这里调错了方法,也许还有其他方法 问题。
请帮忙。
【问题讨论】:
也许你应该改用 requestWhenInUseAuthorization。 Mike.. 也许你是对的,这很明显 :) 让我试试。 【参考方案1】:也许您改为将键添加到测试目标的 Info.plist 中?
【讨论】:
请在评论中将其更改为更自信的答案或澄清问题。你确实有你知道的评论权限。 我认为这很合适,因为这解决了我遇到的问题。我真的不知道他们是否是这种情况。 如果您不知道,请在评论中提问。或者做出一个自信但有条件的回答:“你的问题可能是你有......。在这种情况下,解决方案是......”。我提出这个措辞是为了让答案更加自信,而不是做出隐含的假设(那些真的很危险),但也没有给人留下应该在评论中提出问题的印象。否则,您可以通过添加一些背景信息或一些“......因为......”来提高答案的感知有用性。 有条件的答案,如我之前的评论中所述,我认为主要是为 50 代表以下的人提供的工具,而你不是。但是在这种情况下,问题的年龄,暗示通过commetns与OP直接接触的可能性不大,这也是非常合适的。以上是关于xctest 此应用试图在没有使用说明的情况下访问隐私敏感数据的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap 应用 NSCalendarsUsageDescription 错误:此应用尝试在没有使用说明的情况下访问隐私敏感数据
如何在没有静态文本的情况下在 XCTest 中快速测试 Webview 是不是加载