Erro do gerenciador de localização: (KCLErrorDomain erro 0)

95
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)

Por que esse erro ocorre?

MQLN
fonte
boa pergunta - já vi o mesmo erro às vezes. Acredito que isso aconteça quando o gerenciador de localização não consegue obter a localização atual - por exemplo, porque uma solução boa o suficiente não está disponível. Mas, eu vi isso às vezes depois de ter uma boa correção, então mais tarde esse erro aparece.
Frankodwyer,
1
Para mim, foi porque eu usei uma vírgula em vez de um ponto para o separador decimal de localização personalizada.
electronix384128
Eu estava tendo o mesmo problema, defina a precisão para kCLLocationAccuracyBest ou algum valor grande, ignore o erro e aguarde mais atualizações.
zaheer de

Respostas:

163

Este erro ocorre se você Scheme/Edit Scheme/Options/Allow Location Simulationmarcou, mas não tem um local padrão definido. Tenho certeza de que existem outras causas também.

Undistraction
fonte
1
Obrigado, mas minha pergunta é se definirmos o local padrão, isso afeta a atualização do local do dispositivo?
sKhan de
@ShafKhan Não responda às perguntas nos comentários. Faça isso como uma nova pergunta.
Undistraction
9
Se você está se perguntando onde está o SCHEME, siga este link developer.apple.com/library/mac/recipes/…
Bishal Ghimire
Eu ainda precisava "Redefinir conteúdo e configurações" para fazer o delegado chamar didUpdate em vez de didFail após definir um local padrão no editor de esquema. Então funcionou bem.
owenfi
Isso resolve totalmente o meu problema! Muito obrigado.
Ifelere Bolaji
42

ATUALIZAR

AGRADECIMENTOS A Ben Marten. Você pode torná-lo permanente usando estas etapas no XCode:

  1. Produto> Esquema> Editar Esquema
  2. Clique em Executar .app
  3. Guia de opções
  4. Já verificado Core Location> selecione sua localização
  5. pressione OK

Além disso, mesmo que você não esteja conectado a wi-fi, você pode definir um local no simulador através dos itens do menu superior Debug>Locatione para torná-lo permanente siga os passos acima

erro de localização no simulador ios

Vaibhav Saran
fonte
1
Para torná-lo permanente, em Xcode: Produto / Esquema / Editar Esquema ... / Executar / Opções / Localização do Núcleo - Marque "Permitir Simulação de Localização" e defina "Localização Padrão" como "Nenhum"
electronix384128
1
Sim, funciona. Muito obrigado 😃👍😄😃👌👏💃🙏💃💃. Editando minha pergunta para mais conhecimento :)
Vaibhav Saran
33

Eu só tive esse problema. Levei um tempo para encontrar a solução, que está apenas vagamente relacionada à resposta do autor da postagem anterior.

O Airport (WiFi) deve estar ligado para que o CoreLocation no simulador do iPhone / iPad funcione. Eu estava conectado via Ethernet, então CL não fez nada no Simulador. Ligue o Airport nas configurações de rede e tente novamente. Você pode alterar a ordem de suas interfaces de rede arrastando Airport abaixo da Ethernet se quiser continuar favorecendo sua conexão com fio em vez de sem fio

Meltemi
fonte
2
Eu tenho este erro, e meu computador está conectado à internet via WiFi. Além disso, se não me engano, o Simulador não resolve a localização, usa sempre a localização do Apple Office. Ao usar a estrutura MapKit, o ponto azul é exibido, portanto, o local é definido. Não faz muito sentido.
Alex Angelico
1
Acabei de ligar, não é o primeiro na minha lista de rede, e tudo começou a funcionar (Lion, XC 4.2)
David H
1
Tive o mesmo problema, mas não no simulador, no dispositivo! (iPhone 5S, iOS 8.1.3). Eu estava depurando um aplicativo com MapKit e CoreLocation, e os dois frameworks retornaram sempre o mesmo erro. Até ligar o Wifi! Obrigado :)
Vinzzz
13

Dos documentos da API:

CLError

Códigos de erro retornados pelo objeto gerenciador de localização.

typedef enum {kCLErrorLocationUnknown = 0, kCLErrorDenied, kCLErrorNetwork, kCLErrorHeadingFailure} CLError;

Constantes

kCLErrorLocationUnknown O gerenciador de local não foi capaz de obter um valor de local agora. Disponível no iPhone OS 2.0 e posterior. Declarado em CLError.h.

kCLErrorDenied O acesso ao serviço de localização foi negado pelo usuário. Disponível no iPhone OS 2.0 e posterior. Declarado em CLError.h.

kCLErrorNetwork A rede não estava disponível ou ocorreu um erro de rede. Disponível no iPhone OS 3.0b e posterior. Declarado em CLError.h.

kCLErrorHeadingFailure O título não pôde ser determinado. Disponível no iPhone OS 3.0 e posterior. Declarado em CLError.h.

Portanto, isso significa que o local não pôde ser determinado.

Eu diria que a causa mais provável é que o gerenciador de localização está usando WiFi para triangular a localização e o banco de dados não cobre as redes locais. Isso aparentemente pode ser corrigido pelo usuário se ele for aqui .

No entanto, como observei, também vi isso ocasionalmente como um erro temporário ao executar um programa baseado em localização em um local onde o material de localização WiFi normalmente funciona.

Por último, acho que é possível ver esse erro se houver algum tipo de falha de hardware.

Frankodwyer
fonte
4
Ele está perguntando sobre: ​​KCLErrorDomain
electronix384128
Não há referência a kCLErrorDomain nesta resposta, que é o que o OP está procurando.
Norman H de
5

1) verifique se você realmente tem uma conexão WiFi e 3G válida

se você fizer então

2) ir para as configurações e redefinir seus serviços de localização 3) redefinir suas configurações de rede

MeM
fonte
Ainda não entendo por que não consigo obter a localização sem wi-fi ou 3G no iPad durante o teste, por que o GPS não é usado? Assim, o usuário no dispositivo não consegue obter a localização sem Internet? Estou trabalhando também no aplicativo modo offline ...
Renetik
Tanto quanto eu sei, o GPS não precisa de conexão com a internet ou wi-fi. É apenas um receptor, se estiver em local acessível com 2 ou 3 satélites GPS, podemos obter as coordenadas de localização geográfica. Precisamos nos preocupar com a conexão à internet apenas se as informações geográficas são necessárias para qualquer atividade online, como o google maps, que depende da Internet para mostrar localizações de mapas que não são armazenadas localmente em cache. Aplicativos de navegação dedicados, como o CoPilot, mantêm os mapas a bordo.
Durai Amuthan.H
3

Este erro é gerado quando o Gerenciador de locais não consegue obter informações de localização imediatamente. Descobri que esse erro estava ocorrendo quando o método startUpdatingLocation foi chamado. Para mim, isso estava acontecendo no iPod, mas não no iPhone. Isso faz sentido, uma vez que o iPhone tem mais maneiras (como rede celular) de obter informações de localização e é capaz de obter uma estimativa rápida da localização, enquanto o iPod leva mais tempo, o que fez com que esse erro fosse gerado no iPod.

Visto que, quando esse erro é gerado, o método locationManager: didFailWithError: delegate é chamado, pode-se tratar esse caso específico em uma instrução condicional combinando "[domínio do erro]" e "[código do erro]" do objeto de erro passado para este método.

Vishal Chaudhry
fonte
3

A razão exata do que descobri é que há um conflito ocorrendo na simulação de localização tanto no simulador ios "Configurações de depuração" e nas configurações de xcode "Esquemas de edição". Certifique-se de definir a localização do usuário padrão em qualquer um destes e marque o outro para Nenhum resolveu o problema, espero que isso ajude com certeza. InXcode:insira a descrição da imagem aqui

No simulador de iphone / ipad:insira a descrição da imagem aqui

Super Xtreem
fonte
3

Se você conseguiu isso no emulador, faça o seguinte

Debug > Location >  Apple

instrução do emulador

Hitesh Chavda
fonte
1

Você pode adicionar sua própria lista de locais ao Xcode para testar seus aplicativos.

No Xcode, selecione o menu Depurar / Simular localização e você terá:

a. "Don't Simulate Location"
b. 12 example locations
c. "Add GPX File to Project..."

Selecione "Adicionar arquivo GPX ao projeto ..." e selecione o arquivo GPX que você criou.

Carl
fonte
0

Vá para projeto Xcode> produto> esquema> editar esquema> verificar simulação de localização> defina sua localização> e execute o aplicativo novamente Espero que funcione!

Janisar
fonte
0

Graças a este artigo ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ), recebi uma dica para olhar os dados em meu arquivo GPX personalizado e aí encontrei o problema.

Alguns arquivos GPX que você pode obter de diferentes origens podem ter os seguintes elementos indicando as diferentes coordenadas no caminho especificado. Isso não funcionará com a Simulação de Localização do Xcode.

<gpx>
...
<trkpt lat="" lon="">
<ele></ele>
</trkpt>
...
</gpx>

O que você deve fazer é localizar todas as ocorrências do elemento "trkpt" e substituí-lo por "wpt" em seu editor de texto / xml favorito. O resultado final deve ser o seguinte:

<gpx>
<wpt lat="" lon="">
<ele></ele>
</wpt>
...
</gpx>

Espero que isto ajude! Certamente me ajudou.

Nino
fonte
0

Este erro ocorre enquanto você executa seu programa, mas você simula a localização depois de executar o programa.

Eu recebo um método: saia do simulador e reinicie-o, em seguida, defina a localização do seu simulador antes de executar o programa, e funciona para mim.

Espero que isto ajude! Certamente me ajudou. obrigado...

Matiji66
fonte
0

tudo isso não funcionou para mim .. o que funcionou para mim é: - definir a localização do simulador para none seguida, alterá-lo de volta para o customlocal enquanto o aplicativo está em execução.

DeyaEldeen
fonte
0

Todas as sugestões não ajudaram no meu caso. O que ajudou foi desinstalar o aplicativo do dispositivo simulador, reinstalá-lo e permitir que ele acesse o local (no aplicativo de configurações).

Niklas D
fonte
-1

Se você está obtendo isso no dispositivo, é provável que você não tenha solicitado ou o usuário tenha negado a permissão para coletar o local.

DrMickeyLauer
fonte