2014-09-18 21 views
5

MKMapview posizione utente corrente non attiva in iOS-8, precedente iOS-7 & iOS-6 funzionano correttamente.iOS 8 Mapview Posizione corrente non attiva

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

In questa linea per chiamare automaticamente l'utente posizione corrente metodi delegato

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

ma non Fire In iOS-8.

+0

possibile duplicato del [iOS 8: servizi di localizzazione non funziona] (http://stackoverflow.com/questions/24062509/ios-8-location-services-not -working) –

risposta

6

In iOS8, è necessario richiedere l'autorizzazione dell'utente prima di ottenere la loro posizione.

Ci sono due tipi di richiesta:

-[CLLocationManager requestWhenInUseAuthorization] consente di ottenere la posizione degli utenti solo quando l'applicazione è risvegliare.

-[CLLocationManager requestAlwaysAuthorization] consente di ottenere la posizione degli utenti anche quando è in background.

È possibile scegliere tra loro di conseguenza.

Per esempio, mettere questo prima di iniziare l'aggiornamento posizione:

// 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]; 

} 

Inoltre, non dimenticare di aggiungere due chiavi

NSLocationWhenInUseUsageDescription 

e

NSLocationAlwaysUsageDescription 

nel vostro informazioni .plist.

Lasciare i valori vuoti per utilizzare i messaggi predefiniti oppure è possibile personalizzare il proprio inserendo i valori.

+0

Funzionante, grazie. – user1418679

0

In iOS 8 MapView Current Location fuoco usando

È possibile impostare nel file .plist

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

E tuo fianco codice appena implementare questa

CLLocationManager * locationmanager = [CLLocationManager new ];

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

- (void) locationManager: (CLLocationManager *) didUpdateLocations Manager: (NSArray *) posizioni {

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

}

Sto usando questo mio app perfetta posizione corrente.

3

in iOS 8 Autorizzazione è richiesto come di seguito

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]; 

e avete bisogno di aggiungere due chiavi nel plist

1.NSLocationAlwaysUsageDescription

2.NSLocationWhenInUseUsageDescription

enter image description here

Problemi correlati