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.

Foi útil?

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.

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