Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Perché si verifica questo errore?
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Perché si verifica questo errore?
Risposte:
Questo errore si verifica se hai Scheme/Edit Scheme/Options/Allow Location Simulation
selezionato ma non hai impostato un percorso predefinito. Sono sicuro che ci sono anche altre cause.
AGGIORNARE
GRAZIE A Ben Marten Puoi renderlo permanente usando questi passaggi in XCode:
- Prodotto> Schema> Modifica schema
- Fare clic su Esegui .app
- Scheda delle opzioni
- Posizione principale già selezionata> seleziona la tua posizione
- premere OK
Oltre a ciò, anche se non sei connesso al wifi, puoi impostare una posizione nel simulatore tramite le voci di menu in alto Debug>Location
e per renderlo permanente segui i passaggi precedenti
Ho appena avuto questo problema. Mi ci è voluto un po 'per trovare la soluzione, che è solo vagamente correlata alla risposta del poster precedente.
L'aeroporto (WiFi) deve essere attivato affinché CoreLocation nel simulatore iPhone / iPad funzioni. Ero connesso via Ethernet, quindi CL non ha fatto nulla nel simulatore. Attiva Airport nelle impostazioni di rete e riprova. Puoi modificare l'ordine delle interfacce di rete trascinando Airport sotto Ethernet se desideri continuare a favorire la tua connessione cablata rispetto al wireless ...
Dai documenti dell'API:
CLError
Codici di errore restituiti dall'oggetto location manager.
typedef enumerazione {kCLErrorLocationUnknown = 0, kCLErrorDenied, kCLErrorNetwork, kCLErrorHeadingFailure} CLError;
Costanti
kCLErrorLocationUnknown Il gestore della posizione non è stato in grado di ottenere un valore di posizione in questo momento. Disponibile in iPhone OS 2.0 e versioni successive. Dichiarato in CLError.h.
kCLErrorDenied L'accesso al servizio di localizzazione è stato negato dall'utente. Disponibile in iPhone OS 2.0 e versioni successive. Dichiarato in CLError.h.
kCLErrorNetwork La rete non era disponibile o si è verificato un errore di rete. Disponibile in iPhone OS 3.0be versioni successive. Dichiarato in CLError.h.
kCLErrorHeadingFailure Non è stato possibile determinare l'intestazione. Disponibile in iPhone OS 3.0 e versioni successive. Dichiarato in CLError.h.
Quindi questo significa che non è stato possibile determinare la posizione.
Immagino che la causa più probabile sia che il gestore della posizione utilizzi il WiFi per triangolare la posizione e il database non copre le reti locali. Apparentemente può essere risolto dall'utente se va qui .
Tuttavia, come ho notato, ho anche visto questo occasionalmente come un errore temporaneo durante l'esecuzione di un programma basato sulla posizione in un luogo in cui normalmente funziona la posizione del WiFi.
Infine immagino che sia possibile vedere questo errore se c'è qualche tipo di guasto hardware.
1) verifica di avere effettivamente una connessione WiFi e 3G valida
se lo fai allora
2) vai alle impostazioni e ripristina i servizi di localizzazione 3) ripristina le impostazioni di rete
Questo errore viene generato quando Location Manager non è in grado di ottenere immediatamente le informazioni sulla posizione. Ho scoperto che questo errore si verificava quando è stato chiamato il metodo startUpdatingLocation. Per me, questo stava accadendo su iPod ma non su iPhone. Ciò ha senso, dal momento che l'iPhone ha più modi (come la rete cellulare) per ottenere informazioni sulla posizione ed è in grado di ottenere una stima rapida della posizione mentre l'iPod impiega più tempo, il che ha causato la segnalazione di questo errore su iPod.
Poiché, quando viene generato questo errore locationManager: didFailWithError: viene chiamato il metodo delegato, è possibile gestire questo caso specifico in un'istruzione condizionale abbinando "[dominio errore]" e "[codice errore]" dall'oggetto errore passato a questo metodo.
Il motivo esatto che ho trovato è che si verifica un conflitto nella simulazione della posizione sia nel simulatore ios "Impostazioni di debug" che nelle impostazioni di xcode "Modifica schemi". Assicurati di impostare la tua posizione utente predefinita in uno qualsiasi di questi e seleziona l'altro a Nessuno ha risolto il problema sperando che questo potrebbe aiutare di sicuro. InXcode:
Nel simulatore di iphone / ipad:
Puoi aggiungere il tuo elenco di posizioni a Xcode per testare le tue applicazioni.
Dall'interno di Xcode seleziona il menu Debug / Simula posizione e ti verrà offerto:
a. "Don't Simulate Location"
b. 12 example locations
c. "Add GPX File to Project..."
Seleziona "Aggiungi file GPX al progetto ..." e seleziona il file GPX che hai creato.
Grazie a questo articolo ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ) ho avuto un suggerimento per guardare i dati sul mio file GPX personalizzato e lì ho trovato il problema.
Alcuni file GPX che potresti ottenere da fonti diverse potrebbero avere i seguenti elementi che indicano le diverse coordinate nel percorso specificato. Questo non funzionerà con la simulazione della posizione di Xcode.
<gpx>
...
<trkpt lat="" lon="">
<ele></ele>
</trkpt>
...
</gpx>
Quello che dovresti fare è trovare tutte le occorrenze dell'elemento "trkpt" e sostituirlo con "wpt" nel tuo editor di testo / xml preferito. Il risultato finale dovrebbe essere il seguente:
<gpx>
<wpt lat="" lon="">
<ele></ele>
</wpt>
...
</gpx>
Spero che questo ti aiuti! Sicuramente mi ha aiutato.
Questo errore si verifica mentre esegui il programma, ma simuli la posizione dopo aver eseguito il programma.
Ho un metodo: esci dal simulatore e riavvialo, quindi imposta la posizione del simulatore prima di eseguire il programma e per me funziona.
Spero che questo ti aiuti! Sicuramente mi ha aiutato. Grazie...
tutto questo non ha funzionato per me .. quello che ha funzionato per me è: - impostare la posizione dal simulatore per none
poi cambiarla di nuovo in custom
posizione mentre l'app è in esecuzione.
Se lo ricevi sul dispositivo, è probabile che tu non l'abbia chiesto o che l'utente abbia negato il permesso di raccogliere la posizione.