【发布时间】: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.. 也许你是对的,这很明显 :) 让我试试。
标签: ios objective-c core-location xctest