我正在开发位置应用,我需要获取该位置。当我来到特定的ViewController&位置是关闭它提供警报显示,切换到正常的位置。但问题是,我说取消&下次拨打[locationManager startUpdatingLocation];
时,它不会显示我开启位置的警报。
- (void)getCurrentLocation {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[locationManager requestAlwaysAuthorization];
}
[locationManager startUpdatingLocation];
}
注意 - 我已将plist更改为 NSLocationAlwaysUsageDescription设置为XYZ应用程序想要使用 您当前的位置
答案 0 :(得分:1)
可悲的是,这是设计上的。因此,应用程序开发人员无法通过无休止的请求来骚扰用户。
您需要检查[CLLocationManager authorizationStatus]
以及kCLAuthorizationStatusDenied
是否会显示用户需要进入其设置应用并为您的应用启用位置的消息。
您也应该处理其他授权状态。请参阅CLLocationManager Documentation - CLAuthorizationStatus
中的列表答案 1 :(得分:1)
检查startUpdatingLocation之前的状态。即
if([CLLocationManager locationServicesEnabled])
{
if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusDenied){
NSLog(@"Add your alert here");
}
else
{
[locationManager startUpdatingLocation];
}
}
else
{
NSLog(@"Add your alert here");
}