Location Permission no desenvolvimento móvel: o que é, níveis de acesso e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-05-21 Tempo de leitura: 8 min

Location Permission é uma permissão que um aplicativo móvel solicita ao usuário para acessar dados sobre sua localização geográfica. Sem essa permissão, o aplicativo não pode determinar as coordenadas do dispositivo e, portanto, não pode fornecer recursos de geolocalização. De acordo com Apple Developer Documentation, 2024, todos os aplicativos que usam serviços de geolocalização são obrigados a solicitar o consentimento explícito do usuário por meio de um diálogo do sistema.

Pontos principais

  • Location Permission — uma permissão obrigatória para acessar a geolocalização do dispositivo em aplicativos móveis.
  • Os níveis de acesso dividem-se em segundo plano e durante o uso do aplicativo em ambas as plataformas.
  • Android usa ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION para determinação precisa e aproximada de coordenadas.
  • iOS requer adicionar as chaves NSLocationWhenInUseUsageDescription e NSLocationAlwaysUsageDescription no Info.plist.
  • A solicitação de permissão deve conter uma explicação clara de por que o aplicativo precisa dos dados de localização.

O que é Location Permission?

Location Permission é um mecanismo do sistema operacional que regula o acesso dos aplicativos aos dados de localização geográfica do dispositivo. Sem o consentimento explícito do usuário, o aplicativo não pode obter coordenadas GPS, dados de redes Wi-Fi ou informações de torres de celular.

As plataformas móveis Android e iOS implementam seu próprio sistema de permissões, mas a lógica geral é a mesma: o aplicativo declara as permissões necessárias no manifesto ou arquivo de configuração e as solicita em tempo de execução. De acordo com Android Developers, 2024, a partir do Android 10, todas as permissões de geolocalização pertencem à categoria perigosa e exigem solicitação em tempo de execução.

A razão para essa abordagem é a proteção da privacidade do usuário. Os dados de localização permitem construir rotas de viagem, determinar locais de trabalho e lazer, bem como identificar a pessoa. Portanto, ambas as plataformas exigem uma explicação transparente no diálogo de solicitação: o aplicativo deve indicar o motivo pelo qual precisa de acesso à geolocalização.

Por que a permissão de geolocalização é necessária

A permissão de geolocalização é necessária para qualquer aplicativo cuja funcionalidade dependa do conhecimento da localização física do usuário. Mapas e navegação, aplicativos de entrega, serviços meteorológicos, redes sociais com geotagging — todas essas categorias de software exigem Location Permission.

Sem essa permissão, o aplicativo não pode determinar as coordenadas do dispositivo por nenhum dos métodos disponíveis: nem pelo módulo GPS, nem pela varredura Wi-Fi, nem pelo posicionamento por torres de celular. O usuário pode revogar a permissão a qualquer momento nas configurações do sistema, após o que o aplicativo deve lidar corretamente com a negação.

De acordo com um estudo do Pew Research Center (2024), cerca de 45% dos usuários revogam o acesso à geolocalização em aplicativos que não a utilizam para sua funcionalidade principal. Isso significa que o desenvolvedor precisa justificar claramente a solicitação e oferecer mecanismos alternativos para aqueles que recusaram o Location Permission.

Requisitos legais

O GDPR na Europa e a Lei Federal 152-FZ na Rússia exigem a obtenção de consentimento informado para o processamento de dados de localização. O aplicativo não só deve solicitar a permissão por meio do diálogo do sistema, mas também fornecer um aviso separado sobre os propósitos da coleta de dados. A violação desses requisitos acarreta multas de até 20 milhões de euros ou 4% do faturamento anual da empresa.

Consequências da falta de permissão

Se o aplicativo não solicitar Location Permission ou o usuário negar o acesso, o desenvolvedor deve prever um cenário alternativo. Para um aplicativo de mapas, pode ser a inserção manual do endereço; para um aplicativo de entrega — a seleção de uma lista de endereços salvos; para um serviço meteorológico — a determinação da cidade por endereço IP. Graceful degradation (degradação gradual) é uma prática padrão recomendada pelo Google e Apple.

Níveis de acesso à geolocalização

Os níveis de acesso à geolocalização diferem no Android e iOS, embora a ideia geral seja a mesma: quanto mais preciso o acesso, mais rigorosos são os requisitos que a plataforma impõe ao aplicativo.

Nível de acessoAndroidiOS
Durante o usoApenas quando o aplicativo está ativoWhen In Use — apenas no aplicativo
Em segundo planoAlways — constantemente, mesmo em segundo planoAlways — requer revisão adicional da App Store
AproximadoACCESS_COARSE_LOCATION (precisão até 500 m)Com opção Precision = Off (iOS 14+)

ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION no Android

ACCESS_FINE_LOCATION fornece acesso a coordenadas GPS precisas com margem de erro de até vários metros. Para declarar esta permissão no manifesto, usa-se a constante android.permission.ACCESS_FINE_LOCATION. ACCESS_COARSE_LOCATION, por sua vez, fornece localização aproximada com precisão de até 500 metros com base em dados Wi-Fi e torres de celular.

When In Use e Always no iOS

When In Use permite que o aplicativo receba coordenadas apenas quando está aberto na tela. Always fornece acesso à geolocalização mesmo em segundo plano, mas requer revisão obrigatória da App Store. A partir do iOS 14, o usuário pode desativar separadamente o posicionamento preciso para cada aplicativo através do interruptor Precision.

Solicitar Location Permission no Android

A solicitação de Location Permission no Android é feita em duas etapas: declaração de permissões no manifesto e solicitação em tempo de execução. A partir do Android 6.0 (API 23), todas as permissões perigosas são solicitadas durante a execução do aplicativo, não durante a instalação.

Declaração no manifesto

O primeiro passo é adicionar as permissões necessárias ao arquivo AndroidManifest.xml. Constantes diferentes são usadas para posicionamento preciso e aproximado.

xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Solicitação em tempo de execução em Kotlin

Após a declaração no manifesto, o diálogo do sistema de solicitação de permissão deve ser chamado no código do aplicativo. Vamos ver um exemplo em Kotlin usando Activity Result API.

kotlin
private val locationPermissionRequest =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    when {
        permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
            // Permissão concedida
            getLocation()
        }
        permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
            // Apenas localização aproximada
            getCoarseLocation()
        }
        else -> {
            // Usuário negou
            showLocationExplanation()
        }
    }
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    checkLocationPermission()
}

Lidando com a negação e re-solicitação

Se o usuário negar o acesso, o sistema Android não permite mostrar o diálogo novamente automaticamente. O desenvolvedor precisa chamar shouldShowRequestPermissionRationale para exibir uma explicação preliminar. Em caso de negação repetida com a marca Never Ask Again, o usuário deve ser redirecionado para as configurações do sistema.

kotlin
private fun checkLocationPermission() {
    when {
        ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) ==
            PackageManager.PERMISSION_GRANTED -> {
            getLocation()
        }
        ActivityCompat.shouldShowRequestPermissionRationale(this,
            Manifest.permission.ACCESS_FINE_LOCATION) -> {
            showRationaleDialog {
                requestLocationPermission()
            }
        }
        else -> {
            openAppSettings()
        }
    }
}

Solicitar Location Permission no iOS

A solicitação de Location Permission no iOS requer adicionar chaves especiais ao arquivo Info.plist e chamar métodos da classe CLLocationManager. A Apple dá atenção especial à privacidade, portanto o texto de explicação no diálogo de solicitação deve ser o mais específico possível.

Configuração do Info.plist

Para solicitar localização no iOS, é necessário adicionar uma ou ambas as chaves ao Info.plist: NSLocationWhenInUseUsageDescription para acesso durante o uso e NSLocationAlwaysAndWhenInUseUsageDescription para acesso em segundo plano. O valor de cada chave é uma string que será mostrada ao usuário no diálogo.

xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>Seu aplicativo precisa da sua localização para mostrar pontos próximos no mapa.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Seu aplicativo precisa de acesso à geolocalização em segundo plano para rastrear a rota.</string>

Solicitação em Swift

No código Swift, a solicitação é feita através de uma instância de CLLocationManager. Dependendo do nível de acesso necessário, chama-se requestWhenInUseAuthorization ou requestAlwaysAuthorization.

swift
import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {
    private let manager = CLLocationManager()

    func requestLocationAccess() {
        manager.delegate = self
        manager.requestWhenInUseAuthorization()
    }

    func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
        switch manager.authorizationStatus {
        case .authorizedWhenInUse, .authorizedAlways:
            startLocationUpdates()
        case .denied, .restricted:
            showSettingsAlert()
        case .notDetermined:
            break
        }
    }
}

Diferença entre plataformas

Ao contrário do Android, o iOS não fornece ao desenvolvedor um método para verificar shouldShowRequestPermissionRationale. O próprio sistema decide quando mostrar a explicação. Além disso, no iOS o usuário só pode alterar a permissão através das configurações do sistema — o aplicativo não pode reexibir o diálogo do sistema depois que o usuário fez uma escolha. RequestAlwaysAuthorization primeiro solicita When In Use e, em seguida, após obter o primeiro consentimento, um diálogo separado para acesso em segundo plano.

Melhores práticas com geolocalização

As melhores práticas com Location Permission ajudam a reduzir as recusas dos usuários e atender aos requisitos das lojas de aplicativos. Google e Apple publicaram recomendações cujo cumprimento aumenta a probabilidade de aprovação do aplicativo.

Solicite permissão no contexto

Não mostre o diálogo de solicitação de Location Permission imediatamente ao iniciar o aplicativo. Um usuário que acabou de abrir o aplicativo ainda não entende por que precisa fornecer acesso à geolocalização. Contextual request significa que o diálogo aparece no momento em que o usuário realmente precisa de um recurso que requer permissão. Por exemplo, ao clicar no botão “Encontrar loja mais próxima”.

Explique o motivo antecipadamente

Antes do diálogo do sistema, mostre sua própria tela de explicação (pre-permission screen). Nela, explique por que o aplicativo precisa de geolocalização, quais dados são coletados e como serão usados. Depois que o usuário clicar em “Permitir” na sua tela, mostre o diálogo do sistema. De acordo com Appsflyer (2024), essa abordagem aumenta a taxa de aprovação em 25-35%.

Não solicite Always desnecessariamente

O acesso em segundo plano à geolocalização só é necessário para aplicativos que funcionam em segundo plano: navegadores, rastreadores de atividade, aplicativos de entrega. Se seu aplicativo só precisa de coordenadas quando a tela está aberta, solicite When In Use. A App Store rejeitará o aplicativo se Always não for funcionalmente justificado. No Android, o acesso em segundo plano é adicionalmente regulado pela permissão ACCESS_BACKGROUND_LOCATION.

Perguntas frequentes

O que acontece se o usuário negar o Location Permission?

O aplicativo deve lidar corretamente com a negação e oferecer um cenário alternativo. Por exemplo, inserção manual do endereço ou determinação da cidade por endereço IP. O diálogo do sistema não é mostrado novamente — é necessário redirecionar o usuário para as configurações.

É possível solicitar Location Permission sem explicação?

Tecnicamente, sim — o diálogo do sistema pode ser exibido sem uma tela prévia. No entanto, a taxa de aprovação sem explicação é de 30-40%, enquanto com uma tela prévia é de 60-75%. Apple e Google recomendam sempre explicar o motivo da solicitação.

Como verificar o status do Location Permission no Android?

Use ContextCompat.checkSelfPermission com a constante Manifest.permission.ACCESS_FINE_LOCATION. O método retorna PERMISSION_GRANTED ou PERMISSION_DENIED, permitindo determinar o status atual sem chamar o diálogo do sistema.

Qual a diferença entre ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION?

ACCESS_FINE_LOCATION fornece acesso a coordenadas GPS precisas com erro de 3-10 metros. ACCESS_COARSE_LOCATION fornece localização aproximada com precisão de até 500 metros baseada em Wi-Fi e torres de celular. No Android 12+, o desenvolvedor pode solicitar ambas as permissões simultaneamente.

É necessário Location Permission para scanners BLE?

No Android, para escanear dispositivos BLE é necessário ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION, pois os sinais BLE podem ser usados para triangulação de posição. No iOS, para BLE basta a permissão de Bluetooth — não é necessário Location Permission.

Resumo

  • Location Permission — um mecanismo chave de proteção de privacidade que regula o acesso dos aplicativos à geolocalização do dispositivo.
  • Os níveis de acesso incluem Durante o uso (When In Use) e Segundo plano (Always) no iOS, bem como Preciso (ACCESS_FINE_LOCATION) e Aproximado (ACCESS_COARSE_LOCATION) no Android.
  • Android requer declaração de permissões no manifesto e solicitação em tempo de execução via Activity Result API a partir da API 23.
  • iOS requer adição de chaves no Info.plist e chamada de métodos CLLocationManager com indicação obrigatória do motivo no texto da solicitação.
  • Contextual request — uma melhor prática onde o diálogo aparece no momento da necessidade, não ao iniciar o aplicativo.
  • Pre-permission screen aumenta a taxa de aprovação em 25-35% de acordo com Appsflyer (2024).
  • A negação do usuário requer graceful degradation — um cenário alternativo sem uso de geolocalização.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também