2014-09-18 5 views
5

MKMapview Derzeitiger Benutzer hat sein Objekt nicht in iOS-8, derzeit iOS-7 & iOS-6 funktioniert gut.iOS 8 Mapview Derzeitiger Standort is not

 self.mapView.delegate = self; 
    self.mapView.showsUserLocation =YES; 

In dieser Zeile

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ 
} 

automatisch der Benutzer delegieren aktuellen Standort Methoden zu nennen, aber es Feuer nicht in iOS-8.

+0

möglich Duplikat [iOS 8: Location Services nicht funktioniert] (http://stackoverflow.com/questions/24062509/ios-8-location-services-not -working) –

Antwort

6

In iOS8 müssen Sie die Benutzerautorisierung anfordern, bevor Sie ihren Standort abrufen können.

Es gibt zwei Arten der Anfrage:

-[CLLocationManager requestWhenInUseAuthorization] können Sie nur Benutzer Standort zu erhalten, wenn der App wecken wird.

-[CLLocationManager requestAlwaysAuthorization] können Sie den Standort des Benutzers abrufen, auch wenn es im Hintergrund ist.

Sie können zwischen ihnen entsprechend wählen.

Zum Beispiel setzen diese, bevor Sie die Aktualisierung Standort starten:

// ask for authorization 
CLLocationManager * locationManager = [[CLLocationManager alloc] init]; 
// check before requesting, otherwise it might crash in older version 
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { 

    [locationManager requestWhenInUseAuthorization]; 

} 

Außerdem vergessen Sie nicht, zwei Schlüssel zu addieren

NSLocationWhenInUseUsageDescription 

und

NSLocationAlwaysUsageDescription 

in Ihre Info .plist.

Lassen Sie die Werte leer, um die Standardnachrichten zu verwenden, oder Sie können Ihre eigenen anpassen, indem Sie die Werte eingeben.

+0

Funktioniert gut, Danke. – user1418679

0

In iOS 8 Mapview jetzigen Standort Ballern

Sie in Ihrer .plist Datei

<key>NSLocationWhenInUseUsageDescription</key> 
<string>Your app name Or Other string</string> 
<key>NSLocationAlwaysUsageDescription</key> 
<string>Your app name Or Other string</string> 

Und Ihren Code auf dieser Seite einstellen können implementieren Sie gerade dieser

CLLocationManager * Location = [CLLocationManager neu ];

locationmanager.delegate = self; 
locationmanager.distanceFilter = kCLDistanceFilterNone; 
locationmanager.desiredAccuracy = kCLLocationAccuracyBest; 
[locationmanager startUpdatingLocation];  
[locationmanager requestAlwaysAuthorization]; 

- (void) Locationmanager: (CLLocationManager *) Manager didUpdateLocations: (NSArray *) Standorte {

location = [locations objectAtIndex:0]; 
[locationmanager stopUpdatingLocation]; 

}

Ich verwende diese meine app perfekt aktuellen Standort erhalten.

3

In ios 8 Genehmigung erforderlich ist, wie unten

NSString * osVersion = [[UIDevice currentDevice] systemVersion]; 
    if ([osVersion floatValue]>= 8.0) { 
    [_CLLocationManager requestAlwaysAuthorization]; //Requests permission to use location services whenever the app is running. 
// [_CLLocationManager requestWhenInUseAuthorization]; //Requests permission to use location services while the app is in the foreground. 
    } 
    [_CLLocationManager startUpdatingLocation]; 

Und Sie brauchen zwei Schlüssel in der plist

1 hinzuzufügen.NSLocationAlwaysUsageDescription

2.NSLocationWhenInUseUsageDescription

enter image description here