我正在尝试在应用首次开放时获取用户位置一次。 (其他开口我不想知道)
我不希望用户允许。
我正在使用下面的代码,但它没有告诉我位置,它给了我错误:操作无法完成。 (kCLErrorDomain错误0。)
PS:我没有使用模拟器我正在尝试使用真实设备
代码:
df
col
0 16
1 1
2 10
3 20
4 3
5 13
6 2
7 5
8 7
for c, g in df.groupby('col', sort=False):
print(c)
16
1
10
20
3
13
2
5
7
答案 0 :(得分:2)
这可能无法正常工作,因为您必须请求用户对其位置的许可,即使只是一次。我担心没有办法绕过它并且应该如此。它仅在用户授权时才有效。
您需要ViewDidLoad()
manager.requestWhenInUseAuthorization()
并添加了相关的Info.plist隐私密钥:
隐私 - 使用时的位置用法说明
答案 1 :(得分:0)
我弄清楚了原因。您需要先致电请求授权,然后再请求位置。如果不要求授权,则将出现kCLErrorDomain错误0。如果在manager.requestLocation之前要求授权,则根本不会调用locationManager委托方法。您可以在需要用户位置时使用:
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager requestLocation]; // Second time and beyond, didChangeAuthorizationStatus will not be called.
然后在回叫中,您可以从locationManager请求位置。
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusDenied) {
// The user denied authorization
}
else if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
[self.locationManager requestLocation];
}
}