Pergunta

Eu tenho um aplicativo que verificou a localização. Ele pede ao usuário que use o local e se o usuário disser não no menu, há um problema quando eu carrego o MapView.

Depois de selecionar o MapView, ele solicita o local do usuário novamente. Se o usuário disser que não, novamente, meu console continuará exibindo erros/aviso, bem como meu NSLog do "DidFailWithError" da minha classe de gerente de localização.

Existe uma maneira de interromper o local de localização: DidFailWithErrors se o usuário já disse não? Eu não acho que a Apple aceitaria meu aplicativo se o arquivo de log for preenchido pelo meu local de localização

Aqui está um exemplo do que é repetido no console

ERROR,Time,290362745.002,Function,"void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)",server did not accept client registration 1
WARNING,Time,290362745.005,Function,"void CLClientHandleDaemonInvalidation(__CFMessagePort*, void*)",client 1035.0 has been disconnected from daemon
2010-03-15 12:19:05.002 SAQ[1035:207] LocationManager Error Denied by user
Foi útil?

Solução

Documentação sobre -didFailWithError: Método diz:

Se o usuário negar o uso do serviço de localização pelo seu aplicativo, este método relata um erro Kclerordenied. Ao receber esse erro, você deve interromper o serviço de localização.

Então, depois de receber este erro, você deve enviar uma mensagem para o gerenciador de localização para parar de atualizar o local:

[manager stopUpdatingLocation];

Se você está usando o mkmapview, acho que definir seu showsUserLocation A propriedade para não deve fazer o truque.

Outras dicas

É sua responsabilidade verificar o código de erro e parar de atualizar o local se o código de erro for kCLErrorDenied.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top