Paulo Rodrigues
Paulo Rodrigues

Reputation: 5303

Continue process after user has allowed sharing and location found

I have something like this:

CLLocationManager *locManager = [[CLLocationManager alloc] init];
locManager.delegate = self;
locManager.desiredAccuracy = kCLLocationAccuracyBest;
[locManager startUpdatingLocation];

But I need to get below the latitude and longitude user. Obviously, trying to obtain locManager.coordinate just below the startUpdatingLocation my application crashes.

How can I make a condition to perform a process after the user allows sharing of location and it has been found?

Thanks in advance.

Upvotes: 0

Views: 102

Answers (1)

Felix
Felix

Reputation: 35384

After calling startUpdatingLocation it can take some time until you get a location. The system first checks if location services are enabled for the app and asks the user to allow location services. The GPS hardware first needs to be turned on. It takes some time until it can fix the position.

So you should update the UI to show the user that there is something going on in the background. Consider using a UIActivityIndicatorView and maybe set userInteractionEnabled of the view to NO. Also it is a good practice to give the user the option to cancel the operation.

In your delegate you must implement these 2 methods:

– locationManager:didUpdateToLocation:fromLocation:
– locationManager:didFailWithError:

Here you can remove the UIActivityIndicatorView and reenable user interaction. In case of success you can use the coordinate of the CLLocationManager to do whatever you want. In case of failure show an error alert.

Call stopUpdatingLocation when you don't need location services anymore to save battery.

Upvotes: 1

Related Questions