iOS 6 and Location Services not working

后端 未结 8 2089
走了就别回头了
走了就别回头了 2020-12-09 13:29

I\'ve updated my iOS SDK to version 6. After that I\'ve compiled my app (works fine in iOS 4 & iOS 5) but now the location services doesn\'t wo

相关标签:
8条回答
  • 2020-12-09 13:52

    I've tried everything in plist files, cleans, rebuilds, new targets, configurations, etc, etc, etc. Nothing worked. But FINALLY I've fixed it. I had to create a new Xcode 4.5 project from scratch, reconfigure it, add file by file and framework by framework manually. It seems that my old XCode project had something internally incompatible with last XCode. I write this here because maybe it can save someone's next 10 hours of work.

    0 讨论(0)
  • 2020-12-09 13:53

    setting CFBundleDisplayName solved the problem for me. Same thing location update was never called, just set the info.plist parameter and it start working.

    0 讨论(0)
  • 2020-12-09 14:04

    Make sure you have a CFBundleDisplayName in your project's .plist file. Adding that key fixed it for me.

    0 讨论(0)
  • 2020-12-09 14:11

    This is a change in iOS6:

    You need to implement locationManager:didUpdateLocations: instead of locationManager:didUpdateToLocation:fromLocation to be notified when the location is updated.

    You should also read the documentation about startUpdatingLocation.

    0 讨论(0)
  • 2020-12-09 14:12

    In my case, I had the location manager under a different class and I was calling this class from the main controller. This was not working and the didUpdateLocations was not called.

    //
    //  LocationServices.h
    // 
    
    #import <Foundation/Foundation.h>
    #import <CoreLocation/CoreLocation.h>
    
    @interface LocationServices : NSObject <CLLocationManagerDelegate> {
        CLLocationManager *locationManager;
    
    }
    
    @property (nonatomic, retain) CLLocationManager *locationManager;
    
    - (void)startLocationServices;
    
    @end
    
    
    
    //  LocationServices.m
    #import "LocationServices.h"
    
    @implementation LocationServices 
    @synthesize locationManager, currentLocation;
    
    - (void)startLocationServices {
        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.pausesLocationUpdatesAutomatically = NO;
        locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
    
        if ([CLLocationManager locationServicesEnabled]) {
            [locationManager startUpdatingLocation];
    
        } else {
            NSLog(@"Location services is not enabled");
        }
    }
    
    ////////////////////////////////////////////////
    - (void)locationManager:(CLLocationManager *)manager
         didUpdateLocations:(NSArray *)locations {
        CLLocation* location = [locations lastObject];
        NSLog(@"Updated: latitude %+.6f, longitude %+.6f\n",
              location.coordinate.latitude,
              location.coordinate.longitude);
    }
    @end
    
    // Main controller
    - (void)viewDidLoad {   
        [super viewDidLoad];
    
    .....
    
    LocationServices *locationSerices = [[LocationServices alloc]init];
    [locationSerices startLocationServices];
    ......
    }
    

    The above code does not work. Why? I do not know ....you can easily lose interest when you spend so much time trying to do a thing that is supposed to be simple. iOS is very complicated and unfriendly programming environment. There are many ways to do one thing, only one works, you cannot mix and match without introducing a problem. You have to do everything by the book or you or you get nothing. Not even a hint that you did something wrong ... frustrating ...

    Instead when I implemented locationManager:(CLLocationManager *)manager didUpdateLocations: in the main controller everything worked fine

    0 讨论(0)
  • 2020-12-09 14:14

    Just set the property pausesLocationUpdatesAutomatically of Location Manager to NO. This is a new feature of IOS 6 that disable Location Updates when application runs in background. The default value of this property is YES.

    0 讨论(0)
提交回复
热议问题