每次startUpdatelocation时都不显示警报

时间:2016-03-23 04:35:20

标签: ios iphone cllocationmanager

我正在开发位置应用,我需要获取该位置。当我来到特定的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应用程序想要使用   您当前的位置

2 个答案:

答案 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");
            }