How to get current lat long location in ios 8?

my problem is not getting the current latitude and longitude of the location in ios 8. I tried to set the key in the .plist file for ios 8, but did not call this method-didUpdateToLocation: please help with this release.

my code is: -

- (void)viewDidLoad 

{

 [super viewDidLoad]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; if(IS_OS_8_OR_LATER) { //[self.locationManager requestWhenInUseAuthorization]; [self.locationManager requestWhenInUseAuthorization]; [self.locationManager startUpdatingLocation]; } 

}

+7
objective-c ios8
source share
1 answer
 #define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) -(void)viewDidLoad { [super viewDidLoad]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; if(IS_OS_8_OR_LATER){ NSUInteger code = [CLLocationManager authorizationStatus]; if (code == kCLAuthorizationStatusNotDetermined && ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)] || [self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])) { // choose one request according to your business. if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){ [self.locationManager requestAlwaysAuthorization]; } else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) { [self.locationManager requestWhenInUseAuthorization]; } else { NSLog(@"Info.plist does not contain NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription"); } } } [self.locationManager startUpdatingLocation]; } #pragma mark - CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"didFailWithError: %@", error); UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [errorAlert show]; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"didUpdateToLocation: %@", newLocation); CLLocation *currentLocation = newLocation; if (currentLocation != nil) { longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude]; latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude]; } } 

In iOS 8, you need to do two more things to find work: Add a key to your Info.plist and an authorization request from a location manager asks him to start. There are two Info.plist keys for the new location authorization. One or both of these keys are required. If none of the keys exist, you can call startUpdatingLocation, but the location manager usually does not start. He will not send a failure message to the delegate either (since it never started, it could not fail). It will also fail if you add one or both keys, but forget to explicitly request authorization. So, the first thing you need to do is to add one or both of the following keys to the Info.plist file:

  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescription

Both of these keys take a string

which is a description of why you need location services. You can enter a line like “Location is required to find out where you are,” which, as in iOS 7, can be localized in the InfoPlist.strings file.

enter image description here

+35
source share

All Articles