Deep links. Open the app. Fall back gracefully.
Manifestos de Universal Links e App Links servidos a partir do seu domínio personalizado. O iOS abre seu aplicativo ao tocar; o Android faz o mesmo. Redirecionamento para o navegador no desktop.
- Universal Links (iOS) and App Links (Android) served from your domain
- Deferred deep links — context survives app install
- Smart platform detection with graceful fallbacks
- No SDK required — works with standard OS mechanisms
Universal Links & App Links
Manifest files, auto-served from your domain
iOS Universal Links require an apple-app-site-association file. Android App Links require assetlinks.json. Elido generates and serves both from your custom domain automatically — no separate hosting, no manual file management.
- iOS Universal LinksBundle ID + Team ID → AASA served at /.well-known/ automatically
- Android App LinksPackage name + SHA-256 fingerprint → assetlinks.json, HTTPS enforced
- Smart-link fallbackApp not installed → App Store / Play Store via rule-based routing
- UTM passthroughUTM parameters preserved to store URL — attribution doesn't break
- No SDK in your appOS-level interception only; intent-filter and continueUserActivity
{ "applinks": { "apps": [], "details": [ { "appID": "TEAMID.com.yours.app", "paths": [ "/product/*", "/referral/*", "/invite/*" ] } ] } }
[{ "relation": [ "delegate_permission/ common.handle_all_urls" ], "target": { "namespace": "android_app", "package_name": "com.yourcompany.app", "sha256_cert_fingerprints": [ "AB:12:CD:34:EF:56:..." ] } }]
Served from your custom domain automatically. Configure bundle ID + Team ID (iOS) or package name + SHA-256 fingerprint (Android) in domain settings — Elido generates and hosts both files.
Deferred deep links
Context that survives the install
When the app isn’t installed, the user goes to the store, installs, and opens the app. Deferred deep-linking passes the original deep-link context through that journey so the app can land the user on exactly the right screen after first launch.
- 01
Clicks link
User taps an Elido short link — from email, social, QR.
go.yourcompany.com/p/12345 - 02
No app → Store
App not installed. OS detects from AASA / assetlinks check. Falls back to App Store or Play Store.
iOS → App Store · Android → Play Store - 03
Installs app
User installs from the store. The install referrer carries the click context as a query parameter.
click_id + UTM preserved in referrer URL - 04
Opens app
App opens for the first time. MMP reads install referrer; maps click_id to the install event.
Appsflyer / Adjust / Branch picks it up - 05
Lands on exact page
App routes to the originally linked screen — product/12345 — as if the user had the app already.
product/12345 — context preserved through install
The click_id and UTM parameters from the original short link are passed as query parameters to the store URL. Mobile Measurement Platforms (MMPs) that capture the install referrer — Appsflyer, Adjust, Branch — can match the install to the originating click. Full deferred deep-linking (passing in-app context through install) requires the MMP SDK in your app; Elido covers the link layer.
Smart platform detection
One link. Three redirect paths.
The edge reads User-Agent and platform signals at the redirect layer — before any JS runs. iPhone gets Universal Links, Android gets App Links, desktop gets your web fallback. No JavaScript redirect delay; no client-side platform detection.
- UA parsing at the edge, sub-millisecond
- iOS → Universal Link interception by the OS
- Android → App Link interception via intent-filter
- Desktop → web URL, no store detour
- In-app browsers detected and redirected to system browser
- Composes with smart-link rules — geo + device + deep-link
What you can do
- Apple App Site Association
- Android Asset Links
- Regras de smart-link para fallback na loja
- Testado com adb e xcrun
Como os deep links realmente funcionam — e onde eles falham
Universal Links e App Links são mecanismos de nível de sistema operacional. A configuração é simples; os casos específicos não são. Isso cobre o cenário completo.
apple-app-site-association servido automaticamente do seu domínio personalizado
Os Universal Links exigem um arquivo apple-app-site-association (AASA) servido em /.well-known/apple-app-site-association no seu domínio personalizado. O iOS baixa este arquivo quando seu app é instalado; ele mapeia seu domínio para o bundle ID e team ID do seu app. Se o mapeamento estiver correto, tocar em um link HTTPS no seu domínio em qualquer app iOS (Safari, Mail, Twitter, Instagram) abre seu app diretamente em vez de ir para um navegador. O Elido gera e serve o arquivo AASA do caminho well-known do seu domínio personalizado automaticamente, com base no bundle ID e team ID que você configura nas configurações de domínio. Você não precisa hospedar o arquivo separadamente. O iOS armazena o arquivo AASA em cache e o baixa novamente periodicamente; se você alterar sua configuração de bundle ID nas configurações de domínio do Elido, o novo AASA entra no ar em segundos, mas os dispositivos iOS o buscarão na próxima atualização de cache (geralmente de 24 a 48 horas, ou na reinstalação do app). Testado com o validador Apple AASA em cada lançamento do Elido.
assetlinks.json servido automaticamente — impressão digital SHA-256 da sua chave de assinatura
Os Android App Links exigem um arquivo Digital Asset Links em /.well-known/assetlinks.json no seu domínio. O arquivo mapeia seu domínio para o nome do pacote do seu app e a impressão digital SHA-256 do seu certificado de assinatura. O Android verifica este arquivo durante a instalação do app e também periodicamente. O Elido o serve do seu domínio personalizado automaticamente, com base no nome do pacote e na impressão digital SHA-256 que você configurar. A verificação do Android exige HTTPS (imposto pelo TLS do Elido no domínio personalizado) e o arquivo deve responder em poucos segundos (também gerenciado). Um modo de falha comum: chaves de assinatura diferentes para compilações de debug vs release têm impressões digitais SHA-256 diferentes. Configure ambas as impressões digitais nas configurações de domínio do Elido se estiver testando com uma compilação de debug; as compilações de produção precisam apenas da impressão digital de release. Testado com adb shell pm get-app-links em cada lançamento.
App instalado → deep link. App não instalado → loja. Desktop → web. UTM preservado em tudo.
A cadeia de redirecionamento (fallback) é definida por link ou por domínio nas configurações do Elido. Para um link curto com configuração de deep link: se o SO interceptar o toque (app instalado, domínio verificado), o app abre. Caso contrário (app não instalado), o link abre no navegador; o destino do navegador deve ser o link da sua App Store / Play Store ou um fallback web. As regras de smart-link lidam com isso de forma limpa: configure uma regra para iOS → URL da App Store, uma regra para Android → URL da Play Store e fallback para o destino web. Os parâmetros UTM do link curto original são preservados nas URLs de redirecionamento para que a atribuição não quebre quando o usuário chegar à loja. O deep linking diferido (passar um caminho de deep link específico através de uma instalação, para que o app abra na tela correta após a instalação) requer um SDK no app — o Elido não fornece isso. Para deep linking diferido, você ainda precisará do Appsflyer, Adjust ou Firebase App Distribution.
Retargeting pós-instalação: click ID passado para o destino para atribuição
Em um redirecionamento de deep link, o Elido passa o click_id como um parâmetro de consulta para a URL de fallback. Se o usuário cair na App Store e instalar o app, o click_id está na URL de referência, mas não é propagado automaticamente para o app após a instalação — isso requer SKAdNetwork no iOS ou um SDK de deep link diferido no Android. O que o Elido faz: passa o click_id e os parâmetros UTM para a URL da loja para que uma plataforma de atribuição móvel (MMP) que está capturando o referenciador de instalação possa coletá-los. Isso funciona com Appsflyer e Adjust se você passar o click_id no parâmetro de campanha da URL da loja. Se você não estiver usando um MMP, o click_id na URL da loja é efetivamente perdido após a instalação.
Migrando do Firebase Dynamic Links (descontinuado em 2025)
O Firebase Dynamic Links foi descontinuado pelo Google em 2025. O Elido pode lidar com o padrão principal: um único link curto HTTPS que abre a tela correta em um app instalado, redireciona para a loja e para a web no desktop. Configure o AASA e o assetlinks.json nas configurações de domínio do Elido (substitui a hospedagem desses arquivos no Firebase), atualize seus links de compartilhamento para apontar para links curtos do Elido em vez de URLs page.link e configure a cadeia de fallback via regras de smart-link. O que o Elido não replica: o deep linking diferido do Firebase (contexto de deep link pós-instalação via SDK do Firebase) e os links de deep link do Firebase App Distribution. Se o seu app depende muito de deep linking diferido, você precisará do Appsflyer, Adjust ou Branch junto com o Elido para a camada de atribuição. Para apps que só precisam de 'abrir a tela certa se instalado, senão ir para a loja', o Elido substitui totalmente o Firebase Dynamic Links.
Equipes mobile usando deep links do Elido
Nomes são marcadores por enquanto — nomes reais de clientes aparecerão aqui conforme os estudos de caso forem publicados.
“Migramos do Firebase Dynamic Links na semana em que anunciaram a descontinuação. A configuração do AASA e assetlinks.json no Elido levou meio dia. A cadeia de fallback smart-link substituiu a lógica do SDK do Firebase que tínhamos no app para roteamento da loja.”
“A análise de cliques por link em deep links nos mostrou que 35% dos nossos links de compartilhamento estavam sendo clicados no desktop — não tínhamos fallback web configurado. Adicionar o redirecionamento levou 10 minutos; a taxa de conversão dos links de compartilhamento subiu porque os usuários que clicavam do desktop agora podiam concluir a ação.”
“Usamos links curtos do Elido com configuração de deep link para programas de indicação. A passagem de UTM para a URL da App Store significa que nosso MMP coleta o referenciador de instalação corretamente — a atribuição funciona sem trabalho de SDK personalizado do nosso lado.”
Deep links do Elido vs Branch.io vs Adjust vs Firebase Dynamic Links (descontinuado)
Branch e Adjust são plataformas completas de atribuição móvel — mais poderosas para deep linking diferido e atribuição MMP. O Elido é a ferramenta certa quando os deep links fazem parte de uma configuração mais ampla de encurtador, não o produto principal.
| Feature | Elido | Branch.io | Adjust |
|---|---|---|---|
| Universal Links (iOS) | AASA auto-servido do seu domínio | Totalmente gerenciado em escala | Não — apenas MMP, não hospeda deep link |
| App Links (Android) | assetlinks.json auto-servido do seu domínio | Totalmente gerenciado | Não |
| SDK necessário no app | Não — interceptação em nível de SO | Sim — SDK da Branch | Sim — SDK da Adjust |
| Deep linking diferido | Não — requer SDK no app | Sim — recurso principal | Sim — com SDK da Adjust |
| Atribuição móvel (MMP) | Passagem de click ID; fiação MMP manual | MMP nativo — integrações Appsflyer, Kochava | Plataforma MMP completa |
| Passagem de UTM para a loja | Sim — via parâmetro na URL de fallback | Sim, com contexto de atribuição | Sim |
| Análise de cliques no link | ClickHouse — geo, dispositivo, por link | Análises profundas de atribuição móvel | Dados de atribuição de instalação + evento |
| Substituição do Firebase Dynamic Links | Sim para padrão básico; sem deep link diferido | Substituição total incluindo diferido | Parcial — apenas lado MMP |
Perguntas sobre deep links
Preciso de um SDK da Branch ou qualquer SDK no meu app para usar os deep links do Elido?
Não. Os deep links do Elido usam iOS Universal Links e Android App Links — mecanismos de nível de SO. Seu app só precisa lidar com a URL de entrada da maneira padrão do iOS (scene:openURLContexts ou application:continueUserActivity) ou Android (intent-filter no manifesto). Nenhum SDK de terceiros é instalado; o SO lida com a interceptação com base nos arquivos AASA e assetlinks.json que o Elido serve do seu domínio.
Como é o fluxo de configuração do AASA?
Nas configurações de domínio do Elido → Deep links: insira o bundle ID do seu app iOS (ex: com.suaempresa.app) e o Apple Team ID (string de 10 caracteres da sua conta Apple Developer). O Elido gera o JSON do AASA e o serve em /.well-known/apple-app-site-association no seu domínio personalizado. Verifique se está acessível com curl antes de enviar seu app para o TestFlight ou App Store. O iOS baixa o arquivo AASA durante a instalação do app em dispositivos com iOS 9+.
Posso ter vários aplicativos em um domínio?
Sim — o arquivo AASA suporta várias entradas de aplicativos. Configure o bundle ID e o Team ID de cada aplicativo nas configurações de domínio; o Elido gera um AASA combinado com todos os aplicativos listados. O assetlinks.json do Android também suporta várias combinações de nome de pacote + impressão digital. Caso de uso comum: aplicativo principal e um App Clip, ou aplicativo principal e uma extensão de widget.
Descontinuação do Firebase Dynamic Links — qual o caminho de migração?
Substitua as URLs curtas page.link por links curtos do Elido (seu domínio personalizado ou domínio compartilhado do Elido). Configure o AASA e o assetlinks.json nas configurações de domínio do Elido. Configure a cadeia de fallback via regras de smart-link (regra iOS → App Store, regra Android → Play Store, fallback → web). Atualize a geração de links de compartilhamento no seu app para chamar a API create_link do Elido em vez do Firebase. O que não migra: se o seu app depende do deep linking diferido do Firebase (passagem de intenção pós-instalação), você precisará do Branch ou Adjust para essa parte.
Como faço para testar Universal Links antes de publicar na App Store?
Use xcrun simctl openurl booted 'https://go.suaempresa.com/test-slug' com seu app instalado em um simulador. Em um dispositivo físico com uma compilação de debug, pressione longamente um link no Safari e veja se 'Abrir no Seu App' aparece. A Apple também fornece o App Association File Validator em developer.apple.com — cole a URL do seu AASA e ele verificará a acessibilidade, Content-Type e validade do JSON. O AASA do Elido passa em todos os três testes.
O que é deep linking diferido e por que o Elido não o faz?
O deep linking diferido passa o contexto (ex: 'o usuário estava visualizando o produto ID 123') do clique no link através de uma instalação de app e para o primeiro lançamento do app. Requer um SDK de impressão digital ou atribuição no app (Branch, Appsflyer, Adjust) que corresponda à instalação ao clique durante o processo de instalação. O Elido não instala código de SDK no seu app; apenas servimos o AASA e o assetlinks.json. Sem o SDK, não há mecanismo para passar o contexto através de uma instalação. Para o caso de uso básico de 'abrir a tela certa se estiver instalado', o Elido é suficiente. Para passar a intenção através da instalação, você precisa de um MMP.
Posso usar deep links no domínio compartilhado do Elido (s.elido.me)?
Não. Universal Links e App Links exigem o seu domínio — você não pode reivindicar *.elido.me como um domínio de Universal Link para o seu app. Os deep links exigem um domínio personalizado no Pro ou Business. O domínio personalizado é o que você configura no seu AASA e assetlinks.json, e o Elido serve esses arquivos a partir dele.
Como lidar com o caso em que o navegador do usuário bloqueia a interceptação do app?
Alguns navegadores (notadamente o Chrome no Android anterior ao 6.0 e alguns navegadores integrados como o do Instagram) bloqueiam a interceptação de App Links ou Universal Links. A URL de fallback é o que eles veem. Para navegadores integrados: redirecione primeiro para o navegador do sistema usando uma URL de intenção (Android) ou um aviso ao usuário. Para navegadores integrados do Instagram / TikTok: a abordagem padrão é mostrar um aviso de 'toque para abrir no seu navegador'. O Elido não injeta esse aviso automaticamente — a URL de fallback é o seu destino, e você controla o que acontece lá.
Keep reading
Configuração de domínio personalizado — necessário para deep links; AASA e assetlinks.json servidos do seu hostname.
iOS → App Store, Android → Play Store, desktop → web — a cadeia de fallback usando regras de smart-link.
Como as equipes de produto usam deep links junto com variantes A/B e regras de smart-link.
Integrações MMP — Appsflyer, Adjust e Branch para deep linking diferido junto com o Elido.
Pronto para experimentar?
Comece no plano gratuito, faça o upgrade quando precisar de um domínio personalizado.