L'Emplacement de noyau ne fonctionne pas sous iOS 8
Je suis en train d'utiliser de changement significatif de l'emplacement de la surveillance dans iOS 8, mais la didUpdateLocations méthode n'est jamais appelé. Voici le code de configuration de l'emplacement manager:
- (void)viewDidLoad
{
[super viewDidLoad];
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager requestWhenInUseAuthorization];
[locationManager startMonitoringSignificantLocationChanges];
}
En dépit de l'appel de requestWhenInUseAuthorization
, rien ne s'affiche pour demander à l'utilisateur de l'autoriser. J'ai mis NSLocationWhenInUseUsageDescription, et il ne fonctionne toujours pas. didChangeAuthorizationStatus
et didFailWithError
sont également appelées jamais.
EDIT: j'ai été capable de le faire de demander à l'utilisateur d'autoriser les services de localisation, mais même si vous cliquez sur autoriser il ne montre jamais l'emplacement.
J'ai mis le délégué de l'auto, et j'ai <CLLocationManagerDelegate> dans l'en-tête.
Je suis confronté à la même question. Avez-vous obtenu une solution?
J'ai posté à propos de certains des changements apportés à l'emplacement gestionnaire iOS 8 ici: nevan.net/2014/09/core-location-manager-changes-in-ios-8
dans ce cas particulier (au moins avant de le modifier), la raison en était probablement que le régisseur n'a pas été gardé dans la mémoire assez longue. voir ma réponse ci-dessous.
OriginalL'auteur charleyh | 2014-07-21
Vous devez vous connecter pour publier un commentaire.
Il y a actuellement un bug dans iOS8 beta5 qui toujours désactiver la fonction de géolocalisation de votre application (au moins pour le mien).
Aller dans
settings > Privacy > Location services > Your app > Always
.Mais je ne sais pas pourquoi, mais même si vous le réglez à
Always
ce réglage automatique de désactiver, de sorte s'il vous plaît être patient et reviennent souvent dans les paramètres pour configurer à nouveau votre application de localisation.merci, merci, merci!!!!
Vous êtes les bienvenus, mais je ne comprends pas comment vous pouvez encore rencontrer ce bug depuis la dernière version ios8 est disponible.
Êtes-vous sûr que la raison du comportement différent est le ad-hoc vs app-store? Je pense que la différence est entre la compilation avec XCode 5 et XCode 6
j'ai trouvé le problème était que je ne demande pas requestWhenInUseAuthorization. qu'ils avaient rendue obligatoire dans iOS 8
OriginalL'auteur Martin
Essayez de déclarer
CLLocationManager *locationManager
dans votre fichier d'en-tête, puis il travaille. Sauf si j'ai le déclarer comme une variable globale, il n'a pas demandé la permission et l'emplacement de mise à jour..h
.m
Délégué méthodes
info.inp
Est-il simulateur ou de l'appareil? si c'est le simulateur peut être l'endroit n'est pas sélectionnée dans le menu / Debug / Emplacement et le wifi doit être activé
C'est sur le simulateur, mais j'ai mis un emplacement dans le menu debug.
C'est un bug - même l'Application Maps sur le simulateur de ne pas montrer mon emplacement.
Le simulateur n'est pas capable de trouver votre emplacement. Le code ci-dessus fonctionne très bien pour moi avec Xcode 6 bêta 4.
OriginalL'auteur mohacs
.fichier plist ajouter
OriginalL'auteur bhavik
Toutes les étapes look complet, mais de l'exécuter :startUpdatingLocation seulement après que vous vérifiez pour :didChangeAuthorizationStatus.
À ce stade, assurez-vous que le authorizationStatus n'est pas kCLAuthorizationStatusNotDetermined ou kCLAuthorizationStatusDenied.
Si elle est soit, vérifiez que les entrées de chaîne d'infos.plist.
Si vous sentir qu'il est correct, assurez-vous de désinstaller l'application à partir de l'appareil.
Effectuer un nettoyage de construire et exécuter l'application sur le périphérique.
OriginalL'auteur Abhilash Gopal
J'ai eu un problème similaire de la migration de mon appli pour iOS 8.
Comme le code original, basé sur l'exemple de code fourni par Apple
https://developer.apple.com/library/ios/samplecode/GeocoderDemo/Introduction/Intro.html
J'ai vérifié si il avait été mis à jour et qu'il a eu. La principale différence est dans cette fonction le peu pertinents pour iOS 8, a été commenté. Cela a fonctionné pour moi.
OriginalL'auteur Caevan Sachinwalla
Essayer
Mode d'arrière-plan sur les capacités
#import <CoreLocation/CoreLocation.h>
<CLLocationManagerDelegate>
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:(id)self];
[locationManager requestWhenInUseAuthorization];
C'est dans le début de l'application
NSLocationWhenInUseUsageDescription
dans plistEssayer de CMD + MAJ + K
Essayez d'éteindre l'iPhone et puis tourner sur le - il avait de l'argent dans iOS 8 - si au bout de 5 fois l'application n'est pas en demander l'autorisation à l'Emplacement de Noyau - qui m'a aidé à
OriginalL'auteur Elm Rid
La raison probable, pourquoi le dialogue d'autorisation n'est pas affichée avec l'OPs code, c'est que la localisation manager a pour traîner pour que cela fonctionne.
Utiliser une propriété ou une variable statique pour garder
locationManager
dans la mémoire.OriginalL'auteur
C'est peut-être en raison de la WhenInUseAuthorization n'est pas assez pour le "Importante Modification de l'Emplacement du" les mises à jour.
Lorsque j'utilise AlwaysAuthorization, il fonctionne, tout simplement.
je ne le trouve pas dans les docs. Mais vous pouvez vérifier http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/. En vertu de l'Autorisation "Types" de titre, il indique que d'importants emplacement des mises à jour doivent AlwaysAuthorization.
OriginalL'auteur Ahmet Recep Navruz