Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Pourquoi cette erreur se produit-elle?
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Pourquoi cette erreur se produit-elle?
Réponses:
Cette erreur se produit si vous avez Scheme/Edit Scheme/Options/Allow Location Simulation
vérifié mais que vous n'avez pas défini d'emplacement par défaut. Je suis sûr qu'il y a aussi d'autres causes.
METTRE À JOUR
MERCI À Ben Marten Vous pouvez le rendre permanent en utilisant ces étapes dans XCode:
- Produit> Schéma> Modifier le schéma
- Cliquez sur Exécuter .app
- Onglet Option
- Emplacement principal déjà coché> sélectionnez votre emplacement
- appuyer sur OK
En outre, même si vous n'êtes pas connecté au wifi, vous pouvez définir un emplacement dans le simulateur via les éléments du menu supérieur Debug>Location
et le rendre permanent, suivez les étapes ci-dessus.
J'ai juste eu ce problème. Il m'a fallu un certain temps pour trouver la solution, qui n'est que vaguement liée à la réponse de l'affiche précédente.
Airport (WiFi) doit être activé pour que CoreLocation dans le simulateur iPhone / iPad fonctionne. J'étais connecté via Ethernet donc CL n'a rien fait dans le simulateur. Activez Airport dans vos paramètres réseau et réessayez. Vous pouvez modifier l'ordre de vos interfaces réseau en faisant glisser Airport sous Ethernet si vous souhaitez continuer à favoriser votre connexion filaire sur votre réseau sans fil ...
À partir de la documentation de l'API:
CLError
Codes d'erreur renvoyés par l'objet du gestionnaire d'emplacement.
typedef enum {kCLErrorLocationUnknown = 0, kCLErrorDenied, kCLErrorNetwork, kCLErrorHeadingFailure} CLError;
Constantes
kCLErrorLocationUnknown Le gestionnaire d'emplacement n'a pas pu obtenir une valeur d'emplacement pour le moment. Disponible dans iPhone OS 2.0 et versions ultérieures. Déclaré dans CLError.h.
kCLErrorDenied L'accès au service de localisation a été refusé par l'utilisateur. Disponible dans iPhone OS 2.0 et versions ultérieures. Déclaré dans CLError.h.
kCLErrorNetwork Le réseau n'était pas disponible ou une erreur réseau s'est produite. Disponible dans iPhone OS 3.0b et versions ultérieures. Déclaré dans CLError.h.
kCLErrorHeadingFailure L'en-tête n'a pas pu être déterminé. Disponible dans iPhone OS 3.0 et versions ultérieures. Déclaré dans CLError.h.
Cela signifie donc que l'emplacement n'a pas pu être déterminé.
Je suppose que la cause la plus probable est que le gestionnaire d'emplacement utilise le WiFi pour trianguler l'emplacement et que la base de données ne couvre pas les réseaux locaux. Cela peut apparemment être résolu par l'utilisateur s'il va ici .
Cependant, comme je l'ai noté, j'ai également vu cela occasionnellement comme une erreur transitoire lors de l'exécution d'un programme basé sur l'emplacement dans un endroit où les éléments de localisation WiFi fonctionnent normalement.
Enfin, je suppose qu'il est possible de voir cette erreur s'il y a une sorte de panne matérielle.
1) Vérifiez que vous disposez bien d'une connexion WiFi et 3G valide
si tu fais alors
2) allez dans les paramètres et réinitialisez vos services de localisation 3) réinitialisez vos paramètres réseau
Cette erreur est générée lorsque Location Manager ne peut pas obtenir immédiatement les informations de localisation. J'ai trouvé que cette erreur se produisait lors de l'appel de la méthode startUpdatingLocation. Pour moi, cela se passait sur iPod mais pas sur iPhone. Cela a du sens, car l'iPhone dispose de plus de moyens (comme le réseau cellulaire) pour obtenir des informations de localisation et peut obtenir une estimation rapide de l'emplacement, tandis que l'iPod prend plus de temps, ce qui a provoqué le déclenchement de cette erreur sur l'iPod.
Puisque, lorsque cette erreur est lancée locationManager: didFailWithError: la méthode Delegate est appelée, on peut gérer ce cas spécifique dans une instruction conditionnelle en faisant correspondre "[domaine d'erreur]" et "[code d'erreur]" de l'objet d'erreur passé à cette méthode.
La raison exacte de ce que j'ai trouvé est qu'il y a un conflit dans la simulation d'emplacement à la fois dans le simulateur ios "Paramètres de débogage" et dans les paramètres xcode "Modifier les schémas". l'autre à Aucun résolu le problème espérons que cela pourrait aider à coup sûr. InXcode:
Dans le simulateur iphone / ipad:
Vous pouvez ajouter votre propre liste d'emplacements à Xcode pour tester vos applications.
Depuis Xcode, sélectionnez le menu Déboguer / Simuler l'emplacement et il vous sera proposé:
a. "Don't Simulate Location"
b. 12 example locations
c. "Add GPX File to Project..."
Sélectionnez "Ajouter un fichier GPX au projet ..." et sélectionnez le fichier GPX que vous avez créé.
Grâce à cet article ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ), j'ai eu un indice pour regarder les données sur mon fichier GPX personnalisé et j'ai trouvé le problème.
Certains fichiers GPX que vous pouvez obtenir de différentes sources peuvent avoir les éléments suivants indiquant les différentes coordonnées dans le chemin spécifié. Cela ne fonctionnera pas avec la simulation de localisation de Xcode.
<gpx>
...
<trkpt lat="" lon="">
<ele></ele>
</trkpt>
...
</gpx>
Ce que vous devez faire est de trouver toutes les occurrences de l'élément "trkpt" et de le remplacer par "wpt" dans votre éditeur de texte / XML préféré. Le résultat final devrait être quelque chose comme suit:
<gpx>
<wpt lat="" lon="">
<ele></ele>
</wpt>
...
</gpx>
J'espère que cela t'aides! Cela m'a certainement aidé.
Cette erreur se produit lorsque vous exécutez votre programme, mais que vous simulez l'emplacement après avoir exécuté le programme.
J'obtiens une méthode: quittez votre simulateur et redémarrez-le, puis définissez l'emplacement de votre simulateur avant d'exécuter le programme, et cela fonctionne pour moi.
J'espère que cela t'aides! Cela m'a certainement aidé. Merci...
tout cela n'a pas fonctionné pour moi .. ce qui a fonctionné pour moi est: - définir l'emplacement du simulateur pour none
le changer ensuite à l' custom
emplacement pendant que l'application est en cours d'exécution.
Si vous obtenez cela sur l'appareil, il est probable que vous ne l'ayez pas demandé ou que l'utilisateur ait refusé l'autorisation de collecter l'emplacement.