iOS 8 MKMapView User Location Request Failure
Solution 1
I had the same problem a few days ago. The solution was adding the string
keys NSLocationAlwaysUsageDescription
(for [CLLocationManager requestAlwaysAuthorization]
) or NSLocationWhenInUseUsageDescription
(for [CLLocationManager requestWhenInUseAuthorization]
) to your Supporting Files/Info.plist
You can also edit the source code of the Info.Plist
with Right click > open as > Source code and add these lines:
<!-- for requestAlwaysAuthorization -->
<key>NSLocationAlwaysUsageDescription</key>
<string>Explain for what are you using the user location</string>
<!-- for requestWhenInUseAuthorization -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>Explain for what are you using the user location</string>
Hope this helps.
Solution 2
Finally I have succeeded to run my gpx file on the simulator. It seems that after installing Xcode 6 the first time, there might be a bug causing for gpx files to simulate. Here is how I overcame the problem:
- I have deleted my app from the simulator
- Under App->Capabilities enabled Background Modes->Location updates
- Run the app and let it install on simulator
- Allow access, and I was able to locate the user with GPX
- Afterwards I disabled Location Updates.
I don't know why, but this did the trick for me.
jayjay_21
Updated on June 05, 2022Comments
-
jayjay_21 almost 2 years
I have been trying to move my iOS7 app with MKMapview to support iOS8. However I couldn't get the new request for users to share their locations to work properly. I create my MKMapView on a storyboard and the delegate is set and works perfectly on iOS7. Here is what I've added to support iOS8 Location sharing:
myMapView.h
#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> #import <CoreLocation/CoreLocation.h> @interface myMapView : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate> @property (strong, nonatomic) IBOutlet MKMapView *mapView; @property (strong, nonatomic) CLLocationManager *locationManager;
myMapView.m
//Code omitted #define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) //Code omitted - (void)viewDidLoad { [super viewDidLoad]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; if(IS_OS_8_OR_LATER) { //[self.locationManager requestWhenInUseAuthorization]; [self.locationManager requestAlwaysAuthorization]; [self.locationManager startUpdatingLocation]; } [self.mapView setShowsUserLocation:YES]; [self.mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]; } -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { MKCoordinateRegion region = { { 0.0, 0.0 }, { 0.0, 0.0 } }; region.center.latitude = self.locationManager.location.coordinate.latitude; region.center.longitude = self.locationManager.location.coordinate.longitude; region.span.latitudeDelta = 0.0187f; region.span.longitudeDelta = 0.0137f; [self.mapView setRegion:region animated:YES]; _initialPosition = NO; }
Also I have set
NSLocationAlwaysUsageDescription
key and its value in my InfoPlist, which shows the correct message when prompting the user to share their location.Unfortunately the delegate function
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
never gets called. Although each time the viewController gets loaded the[self.locationManager startUpdatingLocation]
is called, but the delegate does not seem to respond to it. Is there a problem of how I set the delegate or is there something else I am missing here?UPDATE: It seems also that my gpx file is not being called on launch. I have cleared and reloaded my location file, even changed to a default location, but no location is found:
Domain=kCLErrorDomain Code=0
UPDATE 2: Here is a SS from the settings that I have actually succeeded with the user request, but fail to get/update location no matter how much I refresh.
(source: barisaltop.com)Thanks!
-
jayjay_21 over 9 yearsUnfortunately I have already done this and mentioned it in my original question. After further review I am suspicious that this a scheme or gpx file error. I will test it on a iOS8 machine and update my problem.
-
Admin over 9 yearsUps, I missed that part. Sorry! :)
-
Sreejith over 9 yearsI have the same problem. Can't get it to work in my iPod touch. What might be the reason?