Visão geral
Deep linking direciona usuários para uma tela específica no seu aplicativo quando eles tocam em um link — seja a partir de um email, SMS, site, notificação push ou mensagem in-app. Se o aplicativo não estiver instalado, o sistema operacional pode redirecionar os usuários para a loja de aplicativos ou para uma página web de fallback. Este guia cobre:- Tipos de deep links e quando usar cada um
- Configuração de plataforma para Android e iOS
- Tratamento de deep links no seu aplicativo com o SDK do OneSignal
- Comportamento por canal para push, email e mensagens in-app
Para configuração geral de URLs e links (Launch URLs, parâmetros UTM, URLs dinâmicas, rastreamento de links), consulte URLs, links e deep links.
Pré-requisitos
Antes de configurar deep links, você precisa de:- Uma conta OneSignal com um aplicativo configurado
- O SDK do OneSignal instalado no seu aplicativo mobile
- Um domínio que você controla, hospedado via HTTPS, para Universal Links ou App Links
- Acesso ao código-fonte e à configuração de build do seu aplicativo (Xcode para iOS, Android Studio para Android)
Tipos de deep links
Existem três mecanismos comuns de deep linking. Cada um tem comportamento diferente dependendo se o aplicativo está instalado.| Tipo | Plataforma | Formato | Aplicativo não instalado |
|---|---|---|---|
| Universal Links | iOS 9+ | https://yourdomain.com/path | Abre a URL no Safari |
| App Links | Android 6.0+ | https://yourdomain.com/path | Abre a URL no navegador |
| Esquemas de URI personalizados | iOS e Android | myapp://path | Falha silenciosamente ou exibe um erro |
https:// padrão, funcionam em todos os canais (push, email, SMS) e fornecem comportamento de fallback quando o aplicativo não está instalado. Esquemas de URI personalizados (myapp://) são mais simples de configurar, mas não fornecem comportamento de fallback e podem não funcionar em todos os contextos (por exemplo, clientes de email).
Configuração Android (App Links)
Use o App Links Assistant do Android Studio para gerar a configuração necessária.Configurar filtros de intent
Adicione um filtro de intent à Activity que deve tratar o deep link:Tratar o intent recebido
Hospedar o arquivo Digital Asset Links
Gere o arquivoassetlinks.json usando o App Links Assistant do Android Studio e hospede-o em:
Configuração iOS (Universal Links)
Os Universal Links da Apple abrem seu aplicativo quando o usuário toca em uma URLhttps:// correspondente. Para casos de uso mais simples onde o aplicativo está garantidamente instalado, você pode usar URL Schemes em vez disso.
Habilitar Associated Domains
- No Xcode, selecione seu target → Signing & Capabilities → adicione Associated Domains
- Adicione seu domínio:
applinks:yourdomain.com
Tratar o Universal Link no seu aplicativo
Hospedar o arquivo Apple App Site Association
Crie um arquivoapple-app-site-association (AASA) e hospede-o em:
TEAMID pelo seu Apple Team ID e com.example.app pelo identificador do seu bundle:
Comportamento do Launch URL no iOS
O SDK iOS do OneSignal usaopenURL para tratar o Launch URL (propriedade url). Isso faz com que o link abra primeiro no navegador e depois redirecione de volta ao aplicativo — o que pode resultar em uma experiência ruim para o usuário.
Para evitar isso, use uma destas abordagens:
- Use
dataem vez deurlno payload da API e trate o deep link no seu Push Notification Click Listener - Suprima Launch URLs adicionando
OneSignal_suppress_launch_urlsao seuInfo.plistcomo um Boolean com valorYESe, em seguida, trate toda a navegação no click listener
Tratar deep links com o SDK do OneSignal
A maneira mais confiável de tratar deep links de mensagens do OneSignal é usar os click listeners do SDK em vez de depender da resolução de links no nível do SO. Isso oferece controle total sobre a navegação no seu aplicativo.Click listener de notificação push
UseaddClickListener para interceptar cliques em notificações e direcionar o usuário com base na URL do deep link ou em dados adicionais:
addClickListener() Push.
Click listener de mensagem in-app
Use o click listener de mensagem in-app para tratar deep links de botões e ações de mensagens in-app:addClickListener() In-App.
Notificações push
Inclua o deep link de uma destas duas formas:| Método | Propriedade da API | Comportamento |
|---|---|---|
| Launch URL | url (ou app_url somente para mobile) | O SO abre a URL diretamente. No iOS, isso abre o navegador primeiro, a menos que seja suprimido. |
| Additional Data (recomendado) | data | A URL é passada para o seu click listener. Você controla a navegação inteiramente. |
Comportamento por plataforma
- Android: Abre a Activity correspondente diretamente via App Links
- iOS: Abre o Safari e depois o aplicativo (a menos que você suprima Launch URLs e trate a navegação no click listener)
url, web_url e app_url.
Emails
Por padrão, o OneSignal reescreve links de email para rastreamento de cliques. Isso altera a URL, o que quebra o deep linking porque o SO não reconhece mais o domínio como correspondente ao Associated Domain do seu aplicativo.Habilitar deep links em email
Para preservar deep links, desabilite o rastreamento de cliques usando um destes métodos:- Dashboard: Desmarque Track link clicks no editor de email
- API: Defina
disable_email_click_tracking: true - Por link: Use o filtro Liquid
{{ 'https://yourdomain.com/path' | do_not_track_link }}para desabilitar o rastreamento em links individuais enquanto mantém o rastreamento habilitado para os demais

Comportamento de deep links em email
| Cenário | Resultado |
|---|---|
| iOS + Safari + Universal Link + Rastreamento desabilitado | Abre o aplicativo diretamente |
| iOS + Safari + Universal Link + Rastreamento habilitado | Abre o Safari, pergunta para abrir o aplicativo |
| iOS + cliente de email não-Safari + Universal Link | Abre a App Store se o aplicativo não estiver instalado |
| Android + App Link + Rastreamento desabilitado | Abre o aplicativo diretamente |
| Android + App Link + Rastreamento habilitado | Abre o navegador primeiro, depois o aplicativo |
Mensagens in-app
Deep links em mensagens in-app usam o padrão de click listener. Você define um identificador de ação personalizado no editor de mensagens e depois o trata no código do seu aplicativo.Editor drag-and-drop
- Adicione um botão ou elemento clicável
- Defina a ação de clique como Custom Action ID
- Insira o URI do seu deep link como Action Name (ex.:
https://yourdomain.com/promooumyapp://promo)
Editor HTML
Use o métodoopenUrl na In-App JS Library para acionar deep links a partir de HTML personalizado.
Tratar o clique
Use o click listener de mensagem in-app para interceptar a ação e navegar o usuário no seu aplicativo.Testar deep links
Android
Useadb para testar App Links sem enviar uma notificação:
assetlinks.json está acessível:
iOS
Use a ferramenta de validação de Associated Domains da Apple para verificar o seu arquivo AASA. Você também pode testar Universal Links:- Colando o link no aplicativo Notas
- Pressionando o link por mais tempo para confirmar que a opção “Abrir em [App]” aparece
- Tocando no link para verificar se ele abre o seu aplicativo
Universal Links não funcionam quando digitados diretamente na barra de endereços do Safari — eles precisam ser tocados a partir de outro aplicativo (Notas, Mail, Mensagens, etc.).
Mensagens de teste do OneSignal
- Envie um push de teste pelo dashboard do OneSignal com uma URL de deep link como Launch URL ou em Additional Data
- Verifique se a notificação abre a tela correta no seu aplicativo
- Confira os logs do seu click listener para confirmar que a URL ou os dados foram recebidos
Resolução de problemas
Deep link iOS abre o Safari em vez do aplicativo
Este é o problema mais comum. Possíveis causas:- Arquivo AASA não hospedado corretamente — Verifique se está em
https://yourdomain.com/.well-known/apple-app-site-associationcomContent-Type: application/jsone sem redirecionamentos - Associated Domains não configurado — Verifique no Xcode → Signing & Capabilities → Associated Domains se inclui
applinks:yourdomain.com - Comportamento do Launch URL — O SDK iOS do OneSignal usa
openURLpara a propriedadeurl, o que aciona o comportamento de abertura no navegador primeiro. Usedata+ click listener ou suprima Launch URLs - Testando no Safari — Universal Links não são ativados pela barra de endereços do Safari. Teste a partir do aplicativo Notas, Mail ou outro aplicativo.
Deep link Android abre o navegador
autoVerifyausente — Certifique-se de que o filtro de intent incluiandroid:autoVerify="true"assetlinks.jsonnão encontrado — Verifique se o arquivo está emhttps://yourdomain.com/.well-known/assetlinks.jsone retorna HTTP 200- Incompatibilidade de fingerprint SHA256 — O fingerprint em
assetlinks.jsondeve corresponder ao certificado de assinatura do seu aplicativo. Builds de debug e release usam certificados diferentes.
Deep link funciona no push, mas não no email
O rastreamento de cliques de email reescreve URLs, quebrando a verificação de domínio. Desabilite o rastreamento de cliques para emails que contêm deep links.Deep link recebido, mas o aplicativo não navega
- Verifique se o seu click listener está registrado no início do ciclo de vida do aplicativo (ex.: em
Application.onCreate()ouAppDelegate.didFinishLaunchingWithOptions) - Verifique se a URL ou o ID de ação corresponde ao que a sua lógica de roteamento espera
- No iOS, confirme que você não está dependendo de
urlsem suprimir Launch URLs — o navegador pode consumir o link antes do seu listener ser acionado
Perguntas frequentes
O que acontece se o aplicativo não estiver instalado?
Com Universal Links (iOS), a URL abre no Safari como uma página web comum. Com App Links (Android), a URL abre no navegador padrão. Em ambos os casos, você pode configurar sua página web para redirecionar para a loja de aplicativos apropriada. Esquemas de URI personalizados (myapp://) falham silenciosamente ou exibem um erro se o aplicativo não estiver instalado.
Devo usar Launch URL ou Additional Data para deep linking?
Additional Data (data) é recomendado para deep links mobile porque oferece controle total sobre a navegação via click listener. Launch URL (url) é mais simples, mas tem limitações no iOS (redirecionamento pelo navegador) e não permite lógica de roteamento personalizada.
Posso personalizar deep links com dados do usuário?
Sim. Use URLs Dinâmicas com sintaxe Liquid para injetar propriedades do usuário, tags ou dados personalizados nas URLs dos seus deep links. Por exemplo:https://yourdomain.com/profile/{{subscription.external_id}}.
Posso usar deep links com esquemas de URI personalizados?
Sim. Defina o seu esquema personalizado (ex.:myapp://screen) como valor de Launch URL ou Additional Data. Esquemas personalizados funcionam bem para push e mensagens in-app, mas podem não funcionar em clientes de email. Eles também não fornecem fallback se o aplicativo não estiver instalado.
Deep links funcionam com o OneSignal Journeys?
Sim. Ao configurar uma etapa de mensagem em um Journey, defina o Launch URL ou Additional Data com o seu deep link. O comportamento é o mesmo que em um push ou mensagem in-app avulsos.URLs, links e deep links
Launch URLs, parâmetros UTM, URLs dinâmicas e configuração de rastreamento de links.
Referência do SDK mobile
Referência completa da API para click listeners e tratamento de eventos de notificação.
Ações de clique In-App
Configure ações de clique para botões e elementos de mensagens in-app.
Configuração de push mobile
Configuração de notificações push específica por plataforma para Android e iOS.