> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mensagens baseadas em localização

> Segmente usuários por país, coordenadas GPS ou geofence e envie notificações push acionadas por localização com OneSignal.

Envie mensagens aos usuários com base em onde eles estão. O OneSignal pode segmentar usuários por país, coordenadas GPS ou tags personalizadas para criar divulgação oportuna e relevante baseada em localização física.

À medida que os usuários interagem com seu aplicativo e o rastreamento de localização está habilitado, suas coordenadas são atualizadas periodicamente (aproximadamente a cada 5 minutos enquanto o aplicativo está em uso) e podem ser usadas para enviar mensagens via [Journeys](./journeys-overview) ou qualquer ferramenta de criação de mensagens.

<Warning>
  **O OneSignal não rastreia a localização GPS por padrão.** O SDK coleta latitude e longitude apenas quando as três condições a seguir são atendidas:

  1. Seu aplicativo tem as permissões e dependências de localização corretas.
  2. Seu aplicativo habilita explicitamente o compartilhamento com o OneSignal. Sem isso, seu aplicativo pode coletar dados de localização, mas não os compartilhará com o OneSignal.
  3. O usuário concede permissão de localização no prompt do sistema.

  Consulte a [Configuração do rastreamento de localização](#configuração-do-rastreamento-de-localização) para a configuração. Para contexto sobre o comportamento de localização do SDK, consulte [You're in Control: How Location Actually Works in OneSignal's SDK](https://onesignal.com/blog/youre-in-control-how-location-actually-works-in-onesignals-sdk/).
</Warning>

***

## Direcionar por país

O país é determinado pelo endereço IP do dispositivo e atualiza automaticamente cada vez que o usuário abre seu aplicativo. O valor usa o código de país de duas letras ISO 3166-1 Alpha-2 (por exemplo, `US`, `GB`, `CA`).

Direcione por país usando o campo `country` em [Segmentos](./segmentation) ou no parâmetro `filters` da [API Criar segmento](/reference/create-segments):

```json theme={null}
"filters": [
  { "field": "country", "relation": "=", "value": "US" }
]
```

***

## Direcionar por localização (latitude, longitude e raio)

Se seu aplicativo mobile coleta localização GPS e a compartilha com o OneSignal, o SDK atualiza as coordenadas do usuário aproximadamente a cada 5 minutos (com base em permissão e regras do sistema). Se o aplicativo for forçado a parar, a localização não pode ser rastreada até que o usuário o abra novamente.

### Configuração do rastreamento de localização

O rastreamento de localização é configurado no código do seu aplicativo móvel, não no Dashboard do OneSignal. No mínimo, seu aplicativo deve:

* Adicionar permissões de localização nativas e dependências para iOS e Android.
* Habilitar o indicador `Location.isShared` para compartilhar coordenadas com o OneSignal.
* Solicitar a permissão de localização do sistema, ou usar uma [mensagem in-app como soft pre-prompt](./location-opt-in-prompt) para melhores taxas de opt-in.

<Card title="Referência de localização do Mobile SDK" icon="location-dot" href="./mobile-sdk-reference#location">
  Configuração completa e código por plataforma para iOS, Android, React Native, Flutter, Unity e Cordova/Ionic.
</Card>

<Check>
  Uma vez habilitado o rastreamento de localização, você pode criar segmentos ou enviar mensagens via nossa API usando o filtro `location`.
</Check>

<Frame caption="Filtro de localização em Segmentos">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/3109479-Screen_Shot_2021-02-09_at_8.28.43_AM.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=13644c44bf75d4907e7fbda8641ae1bd" alt="OneSignal segment builder showing the location radius filter with latitude, longitude, and radius fields" width="1440" height="938" data-path="images/docs/3109479-Screen_Shot_2021-02-09_at_8.28.43_AM.png" />
</Frame>

***

## Rastreamento de latitude e longitude em push web

O OneSignal **não coleta** latitude/longitude para web. No entanto, você pode usar tags para definir a localização do seu aplicativo web ou usar a [API Update User](/reference/update-user) para definir a localização do seu servidor.

**Exemplo de marcação:**

1. Solicite acesso à localização em seu aplicativo web usando a [API de Geolocalização](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API) do navegador.
2. Use JavaScript para detectar as coordenadas do usuário.
3. Envie essas coordenadas para o OneSignal usando [tags](./add-user-data-tags).

```javascript theme={null}
OneSignal.User.addTags({
  lat: "37.160",
  long: "-117.773"
});
```

Uma vez que as tags estejam definidas, crie um segmento geo-cercado combinando filtros de intervalo de tags. Por exemplo, para direcionar usuários dentro do bounding box `37° ≤ lat < 38°` e `-118° ≤ long < -117°`, adicione estes quatro filtros no construtor de segmentos:

* Tag `lat` maior que `37`
* Tag `lat` menor que `38`
* Tag `long` maior que `-118`
* Tag `long` menor que `-117`

***

## Direcionar por cidade ou localização personalizada

O OneSignal não detecta nativamente cidade ou códigos de área. Para direcionar por cidade ou localização personalizada:

* Deixe usuários inserirem uma cidade ou região em um formulário.
* Ou use JavaScript com geocodificação reversa (por exemplo, API do Google Maps) para inferir cidade a partir de coordenadas.
* Envie o nome da cidade como uma [tag de dados](./add-user-data-tags).

```javascript theme={null}
OneSignal.User.addTag("city", "San Francisco");
```

***

## FAQ

### O rastreamento de localização funciona na web?

Não nativamente. O Web SDK do OneSignal não coleta coordenadas GPS. Para usar segmentos baseados em localização com push web, colete coordenadas você mesmo da [API de Geolocalização](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API) do navegador e envie-as para o OneSignal como [tags](./add-user-data-tags), depois construa segmentos com filtros de intervalo nessas tags. Consulte [Rastreamento de latitude e longitude em push web](#rastreamento-de-latitude-e-longitude-em-push-web).

### Por que meu aplicativo não está rastreando localização?

Verifique se as três condições de configuração estão atendidas: seu aplicativo tem as permissões de localização e dependências corretas instaladas, `Location.isShared` está definido como `true`, e o usuário concedeu permissão de localização no prompt do sistema. Consulte a [referência de localização do Mobile SDK](./mobile-sdk-reference#location) para configuração específica de plataforma e correções comuns, incluindo a dependência Android `play-services-location`.

### Com que frequência o SDK atualiza a localização?

Quando o rastreamento de localização está habilitado, o SDK atualiza as coordenadas aproximadamente a cada 5 minutos enquanto o aplicativo está em uso. Se o aplicativo for forçado a parar, as atualizações de localização pausam até que o usuário abra o aplicativo novamente.

### Posso direcionar usuários por cidade?

Não nativamente. O OneSignal rastreia país (via endereço IP) e coordenadas GPS (via SDK), mas não cidade ou código de área. Você pode inferir cidade a partir de coordenadas usando um serviço de geocodificação reversa e armazená-la como uma tag. Consulte [Direcionar por cidade ou localização personalizada](#direcionar-por-cidade-ou-localização-personalizada).

***

## Páginas relacionadas

<Columns cols={2}>
  <Card title="Prompt de opt-in de localização" icon="message" href="./location-opt-in-prompt">
    Use uma mensagem in-app como soft pre-prompt antes de solicitar permissão de localização nativa.
  </Card>

  <Card title="Segmentos" icon="users" href="./segmentation">
    Crie segmentos de audiência usando filtros de localização, tags e propriedades do usuário.
  </Card>
</Columns>
