> ## 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.

# Solicitar permissões push

> Solicite permissão de notificação push dos usuários no momento certo usando soft prompts in-app e o prompt nativo do sistema no iOS e Android.

## Por que usar um prompt de permissão push?

Para enviar notificações push que aparecem como banners, mostrar na tela de bloqueio e reproduzir sons, seu aplicativo deve primeiro solicitar permissão ao usuário. No iOS, Android, Huawei, Amazon e Web, isso envolve exibir um prompt de permissão no nível do sistema.

<Frame caption="Um dispositivo iOS e Android exibindo o prompt de permissão no nível do sistema.">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/7ace2bd5abf90a044c363ec9acb227467b62a7f49fdf0dd2922280dc188f4973-a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=381c6c0ecf9c24cda0e9153fc582e319" alt="iOS and Android system-level push permission prompts side by side" width="1920" height="1080" data-path="images/docs/7ace2bd5abf90a044c363ec9acb227467b62a7f49fdf0dd2922280dc188f4973-a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png" />
</Frame>

Este guia é para assinantes de push de aplicativos móveis. Para push web, consulte [Prompts de permissão web](./permission-requests).

**Pré-requisitos:** Uma [conta OneSignal](https://dashboard.onesignal.com), um aplicativo móvel com o [SDK do OneSignal instalado](./mobile-sdk-setup), e [mensagens in-app habilitadas](./in-app-messages-setup).

<Warning>
  O iOS permite o prompt de permissão do sistema apenas uma vez. O Android permite duas vezes. Se o usuário recusar, ele deverá habilitar notificações manualmente nas configurações do sistema. Um prompt mal cronometrado pode custar permanentemente um assinante.
</Warning>

<Tip>
  No iOS, você também pode usar [notificações provisórias](./ios-provisional-push-notifications), que são entregues silenciosamente na Central de Notificações sem solicitar ao usuário — ideal para testes ou onboarding com baixo atrito.
</Tip>

Como o prompt do sistema é limitado, tanto a [Apple](https://developer.apple.com/design/human-interface-guidelines/managing-notifications) quanto o [Google](https://developer.android.com/training/permissions/requesting) recomendam fortemente explicar o valor das suas notificações antes de exibi-lo. Você pode acionar o prompt a qualquer momento usando o [método SDK](./mobile-sdk-reference#requestpermission-fallbacktosettings-push-push) `requestPermission()`, mas sem o contexto adequado, os usuários têm mais probabilidade de recusar — e no iOS, um prompt recusado não pode ser exibido novamente.

A abordagem recomendada é um "soft prompt" — uma mensagem in-app personalizada que apresenta a solicitação antes do prompt do sistema. Se o usuário aceitar, o prompt do sistema aparece. Se recusar, nada acontece e você pode perguntar novamente depois.

<Frame caption="Um soft prompt in-app seguido pelo prompt de permissão push no nível do sistema.">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a6d382ca2711ba0e9f013bebe5c420d129fbfbc5ef0b2fbd9cb4bef78c7e9480-mobile-push-optimize-reach.webp?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=bfbc66b313bd85f944476e8363f1d093" alt="In-app message leading to system push permission prompt" width="1600" height="1058" data-path="images/docs/a6d382ca2711ba0e9f013bebe5c420d129fbfbc5ef0b2fbd9cb4bef78c7e9480-mobile-push-optimize-reach.webp" />
</Frame>

***

## Configurar um prompt de permissão push in-app

<Steps>
  <Step title="Remover quaisquer prompts de permissão automáticos">
    Antes de começar, certifique-se de que seu aplicativo não está acionando automaticamente o prompt push nativo:

    * Remova os métodos `requestPermission()` ou `optIn()` se você estiver chamando-os na inicialização do aplicativo.
    * Remova chamadas nativas do iOS para `requestAuthorizationWithOptions` e quaisquer métodos que geram tokens push.
    * Remova chamadas do Android para `requestPermissions` e quaisquer métodos que geram tokens push.

    Além disso, certifique-se de estar usando a [versão mais recente do SDK do OneSignal](https://github.com/OneSignal/sdks) em seu aplicativo.
  </Step>

  <Step title="Criar ou editar a mensagem in-app">
    Vá para **Messages > In-App**, então:

    * Edite o template padrão Push Permission Prompt, ou
    * Clique em New Message para criar o seu próprio.

    <Frame caption="Edite o template padrão Push Permission Prompt ou crie o seu próprio.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=80dd758e2587507b2052b2e20df0409e" alt="OneSignal in-app messages list showing the Push Permission Prompt template" width="2616" height="1356" data-path="images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt.jpg" />
    </Frame>

    Defina a audiência como **Show to all users**. O OneSignal filtra automaticamente esta mensagem para mostrar apenas para usuários que não se inscreveram no push, com base na ação de clique Push Permission Prompt.

    <Frame caption="Defina a audiência como 'Show to all users' porque a ação de clique Push Permission Prompt filtra para usuários não inscritos.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt-show-to-all-users.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=e9b2b23e4e7663ee7799fd4a92dbe473" alt="Audience setting configured to show to all users" width="1766" height="678" data-path="images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt-show-to-all-users.jpg" />
    </Frame>
  </Step>

  <Step title="Personalizar o design da mensagem">
    Personalize a aparência, sensação e redação para se adequar ao seu aplicativo. Informe aos usuários que tipo de notificações eles receberão e por que são valiosas.

    Consulte [Design de Mensagens In-App com Arrastar e Soltar](./design-your-in-app-message) ou [Design de mensagens in-app com HTML](./design-your-in-app-message-with-html) para detalhes.

    <Frame caption="O editor de blocos de mensagens in-app para criar mensagens de opt-in push.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/push-customize-the-message-design.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=df030196ba721eedfd4c1ad5af0fa3cd" alt="In-app message block editor with a push opt-in prompt" width="2604" height="1770" data-path="images/push/push-customize-the-message-design.jpg" />
    </Frame>
  </Step>

  <Step title="Adicionar a ação de clique do prompt de permissão push">
    Adicione uma ação de clique **Push Permission Prompt** a qualquer botão ou imagem em sua mensagem. Quando tocado, o prompt do sistema é exibido.

    <Frame caption="Adicionando uma ação de clique Push Permission Prompt a um botão.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/push-add-the-push-permission-prompt-click-action.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=8ed4971452754851f4ff064121bcb900" alt="Click action dropdown with Push Permission Prompt selected" width="2604" height="1770" data-path="images/push/push-add-the-push-permission-prompt-click-action.jpg" />
    </Frame>

    <Frame caption="O prompt de permissão nativo do iOS acionado pela ação de clique.">
      <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/e18f7f87a5efaaa5284cf19be8de863c3833379d37b095aef9d015835a694485-prompt-2.webp?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=a484b1c75320beefb83bde20c443f789" alt="iOS native push notification permission prompt" width="1560" height="804" data-path="images/docs/e18f7f87a5efaaa5284cf19be8de863c3833379d37b095aef9d015835a694485-prompt-2.webp" />
    </Frame>

    Se um usuário já negou a permissão, o botão irá direcioná-lo para as configurações de notificação do seu aplicativo.

    <Info>
      Mensagens in-app com uma ação Push Permission Prompt não são mostradas aos usuários que já permitiram notificações.
    </Info>
  </Step>

  <Step title="Escolher um gatilho">
    A audiência controla quem é elegível para ver a mensagem. Os gatilhos controlam quando ela é mostrada.

    <Frame caption="Opções de gatilho para controlar quando a mensagem é mostrada.">
      <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/52f0d8bef7cac18c1d791ec229d2bd86e995a8e01401c7559e2476fcfecddc6d-Screenshot_2024-10-29_at_2.18.33_PM.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=1b55a4815213ddf3f77db8041e143aa2" alt="In-app message trigger configuration panel" width="1792" height="514" data-path="images/docs/52f0d8bef7cac18c1d791ec229d2bd86e995a8e01401c7559e2476fcfecddc6d-Screenshot_2024-10-29_at_2.18.33_PM.png" />
    </Frame>

    Você pode acionar a mensagem:

    * Na abertura do aplicativo
    * Após um tempo definido de sessão
    * Em um evento específico do usuário
    * Programaticamente, usando os [métodos SDK de mensagem in-app](./mobile-sdk-reference) para controle total sobre tempo e contexto

    Por exemplo, para esperar até que o usuário tenha passado pelo menos 5 minutos no aplicativo:

    <Frame caption="Gatilho configurado para mostrar a mensagem após 5 minutos de tempo de sessão.">
      <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81f8cca652667ae5920dbc8b73cca1b297d9e5f35d5ed4dc23d05640a4c838ae-Screenshot_2024-10-29_at_2.25.25_PM.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=311ed96b93b789bb652cc365b5708d7a" alt="Session duration trigger set to 5 minutes" width="1792" height="624" data-path="images/docs/81f8cca652667ae5920dbc8b73cca1b297d9e5f35d5ed4dc23d05640a4c838ae-Screenshot_2024-10-29_at_2.25.25_PM.png" />
    </Frame>
  </Step>

  <Step title="Agendamento e frequência">
    Controle com que frequência a mensagem aparece:

    * **Apenas uma vez** — Baixa chance de converter usuários que não estavam prontos da primeira vez.
    * **Toda vez que as condições forem atendidas** — Muito agressivo e pode incomodar os usuários.
    * **Múltiplas vezes (recomendado)** — Defina um máximo alto (ex.: 9999) com um intervalo entre visualizações (ex.: 2 semanas). Isso solicita novamente aos usuários não inscritos periodicamente sem ser intrusivo. Ajuste o intervalo com base no seu caso de uso.

    <Frame caption="Configurações de agendamento e frequência para a mensagem in-app.">
      <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/eb61a38c8908fbeba60833eecc357d720e747c37abacffdfe246dbd7758bbaf4-Screenshot_2024-10-29_at_2.28.20_PM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=7a49b641bdeb959dde6edad5ef7de9dc" alt="Schedule configuration showing max displays and gap between views" width="1792" height="910" data-path="images/docs/eb61a38c8908fbeba60833eecc357d720e747c37abacffdfe246dbd7758bbaf4-Screenshot_2024-10-29_at_2.28.20_PM.png" />
    </Frame>

    <Check>
      Atualize sua mensagem e ative-a. Monitore suas estatísticas e ajuste o intervalo entre exibições conforme necessário.
    </Check>
  </Step>
</Steps>

***

## Mostrar programaticamente o prompt de permissão

Você pode acionar o prompt de permissão push manualmente usando os [métodos SDK](./mobile-sdk-reference) `requestPermission()` ou `optIn()`. Isso é útil para fluxos personalizados, como:

* Uma [Central de preferências](./preference-center)
* Uma tela de perfil do usuário
* Eventos específicos in-app

***

## Rastrear permissões push e resultados de prompt

Ao usar mensagens in-app para solicitar push, você pode rastrear ações de clique com o [listener de clique de mensagem in-app](./mobile-sdk-reference#addclicklistener-in-app).

Se a mensagem in-app for exibida mas o usuário não clicar no botão, use os [eventos de ciclo de vida da mensagem in-app](./mobile-sdk-reference#addlifecyclelistener) para rastrear impressões e dispensas.

Para rastrear o resultado do prompt de permissão no nível do sistema em si, use o [listener de permissão push](./mobile-sdk-reference#addpermissionobserver-push).

<Info>
  Você pode enviar esses eventos SDK para seu backend ou ferramenta de analytics de sua escolha.
</Info>

***

## FAQ

### O que acontece se um usuário recusar o prompt de permissão push?

No iOS, recusar o prompt do sistema desativa permanentemente as notificações push do seu aplicativo — o prompt não pode ser exibido novamente. No Android, o usuário tem mais uma chance (dois no total). Após todas as tentativas serem usadas, o usuário deve reativar as notificações manualmente em **Configurações > Notificações** no dispositivo. O método `requestPermission(fallbackToSettings: true)` do SDK do OneSignal pode redirecionar os usuários para as configurações de notificação se a permissão foi negada anteriormente.

### Posso personalizar o prompt de permissão nativo do sistema?

Não. Os diálogos de permissão nativos do iOS e Android são controlados pelo sistema operacional e não podem ser personalizados. Você só pode controlar o soft prompt (a mensagem in-app exibida antes do prompt do sistema). Use o soft prompt para explicar o valor das suas notificações, definir expectativas e aumentar a chance de um "Permitir" no prompt do sistema.

### Posso ainda solicitar aos usuários com notificações provisórias?

Sim. Se você usar [notificações push provisórias do iOS](./ios-provisional-push-notifications), ainda pode mostrar um soft prompt para converter esses usuários em assinantes push completos. Cronometrize o prompt estrategicamente — depois que o usuário tiver visto o valor das suas notificações provisórias.

### Como solicitar novamente a usuários que negaram push anteriormente?

Você não pode exibir o prompt de permissão do sistema novamente depois que o usuário recusou no iOS (ou duas vezes no Android). Em vez disso, use o método SDK `requestPermission(fallbackToSettings: true)`, que abre a página de configurações de notificação do aplicativo para que o usuário possa habilitar as notificações manualmente. Combine isso com uma mensagem in-app explicando por que as notificações são valiosas.

### Quando o Android começou a exigir prompts de permissão?

O Android 13 (API nível 33) introduziu a permissão de notificação em tempo de execução, exigindo consentimento explícito do usuário para notificações push.

* **Lançado:** Agosto de 2022 (dispositivos Pixel)
* **Obrigatório para SDK de destino:** A partir de 31 de agosto de 2023, todos os novos aplicativos e atualizações no Google Play devem ter como destino o nível de API 33 ou superior.
* **Fonte:** [Guia do desenvolvedor do Google sobre permissões de notificação](https://developer.android.com/develop/ui/views/notifications/notification-permission)

***

<Card title="Notificações push provisórias do iOS" icon="apple" href="./ios-provisional-push-notifications">
  Envie notificações para a Central de Notificações sem um prompt de permissão antecipado no iOS 12+.
</Card>
