LocationServiceSenabled sempre retorna sim
-
26-09-2019 - |
Pergunta
Eu testei meu dispositivo (ipod touch 2g iOS 4.1) se os serviços de localização estiverem ativados
permitted = [locationManager locationServicesEnabled];
E eu sempre recebo um sim se os serviços de localização estão ativados ou não. Estou falando sobre o botão geral para serviços de localização e não o botão específico do aplicativo. No iPad com iOS 3.2.2, tudo está funcionando bem.
Solução
Quando você implementa o delegado para gerente de localização, você deve implementar o DidFailWithError. Lá, você receberá o erro apropriado se o usuário não permitir o acesso ao local
A Documentação da Apple afirma:Se o usuário negar o uso do serviço de localização pelo seu aplicativo, este método relata um kCLErrorDenied
erro. Ao receber esse erro, você deve interromper o serviço de localização.
Outras dicas
Lembre-se disso [locationManager locationServicesEnabled]
é descontinuado desde o iOS 4.0. Use o método de classe [CLLocationManager locationServicesEnabled]
em vez de.
O botão específico do aplicativo pode ser recuperado por
[CLLocationManager authorizationStatus]
Quando você usa
[CLLocationManager locationServicesEnabled]
Em seguida, você inspeciona se o LocationServices está ativado em todo o sistema. Então, quando você vai para as configurações -> Serviços de localização e vê o primeiro interruptor. Esse método retorna o estado desse estado e não está em relação ao seu aplicativo.
Se você precisar saber se o seu aplicativo tem acesso aos serviços de localização, use a resposta @Pascalius.
Rápido 3.1 Função retorna -> Status: Bool and Message: String
func isLocationEnabled() -> (status: Bool, message: String) {
if CLLocationManager.locationServicesEnabled() {
switch(CLLocationManager.authorizationStatus()) {
case .notDetermined, .restricted, .denied:
return (false,"No access")
case .authorizedAlways, .authorizedWhenInUse:
return(true,"Access")
}
} else {
return(false,"Turn On Location Services to Allow App to Determine Your Location")
}
}
if(![CLLocationManager locationServicesEnabled] || ([CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse && [CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedAlways))
{
; // app doesn't have access to localization to whatever you want
}
CllocationManager LocationServiceSenabled] Retornará não quando o botão de configuração do usuário for alterado para OFF, somente então eu conseguir um não.