Guia de deep linking para iOS
Este guia ajuda você a escolher a estratégia de deep linking certa para seu app iOS. A escolha depende do canal de envio de mensagens que você está usando e se você usa um provedor de links de terceiros, como o Branch.
Para detalhes de implementação, consulte Deep linking. Para solução de problemas, consulte Solução de problemas de deep linking.
Como escolher um tipo de link
Há três maneiras de lidar com links de mensagens da Braze no seu app iOS. Cada uma funciona de um jeito diferente e é mais adequada para determinados canais e casos de uso.
| Tipo de link | Exemplo | Ideal para | Abre sem o app instalado? |
|---|---|---|---|
| Esquema personalizado | myapp://products/123 |
Push, mensagens no app, Content Cards e Banners | Não, o link falha |
| Link universal | https://myapp.com/products/123 |
E-mail, SMS e canais com rastreamento de cliques | Sim, recorre à web |
| Open Web URL Inside App | Qualquer URL https:// |
Exibição de conteúdo da web em uma WebView modal | Não se aplica, é exibido na WebView |
Deep links com esquema personalizado
Deep links com esquema personalizado (por exemplo, myapp://products/123) abrem o app diretamente em uma tela específica. Eles são a opção mais simples para canais em que os links não são modificados por terceiros.
Use deep links com esquema personalizado quando:
- Enviar notificações por push, mensagens no app, Content Cards ou Banners.
- Você não precisar que o link funcione se o app não estiver instalado.
- Você não precisar de rastreamento de cliques (encapsulamento de links pelo provedor de serviços de e-mail).
Não use deep links com esquema personalizado quando:
- Enviar e-mails. Os provedores de serviços de e-mail encapsulam os links para rastrear cliques, o que quebra os esquemas personalizados.
- Você precisar que o link recorra a uma página da web se o app não estiver instalado.
Links universais
Links universais (por exemplo, https://myapp.com/products/123) são URLs HTTPS padrão que o iOS pode direcionar para o seu app em vez de abrir no navegador. Eles exigem configuração no servidor (um arquivo AASA) e no app (o entitlement Associated Domains).
Use links universais quando:
- Enviar e-mails. Seu provedor de serviços de e-mail encapsula os links para rastrear cliques, então os links precisam ser HTTPS.
- Enviar SMS ou usar outros canais em que os links são encapsulados ou encurtados.
- Você precisar que o link recorra a uma página da web quando o app não estiver instalado.
- Você usar um provedor de links terceirizado, como Branch ou AppsFlyer.
Não use links universais quando:
- Você só precisar de deep links em push, mensagens no app, Banners ou Content Cards. Os esquemas personalizados são mais simples.
“Open Web URL Inside App”
Essa opção abre uma página da web em uma WebView modal dentro do seu app. Ela é processada inteiramente pelo SDK da Braze usando Braze.WebViewController, então você não precisa escrever nenhum código para lidar com URLs.
Use “Open Web URL Inside App” quando:
- Você quiser exibir uma página da web (como uma promoção ou um artigo) sem sair do app.
- O URL for uma página da web HTTPS padrão, e não um deep link para uma tela específica do app.
Não use “Open Web URL Inside App” quando:
- Você precisar navegar para uma visualização específica do app. Nesse caso, use um esquema personalizado ou um link universal.
- A página da web exigir autenticação ou tiver cabeçalhos de Content Security Policy que bloqueiem a incorporação.
O que você precisa para cada tipo de link
Deep links com esquema personalizado
| Requisito | Detalhes |
|---|---|
| Arquivo AASA | Não é necessário |
Info.plist |
Registre seu esquema em CFBundleURLTypes e adicione-o a LSApplicationQueriesSchemes |
| Método do app delegate | Implemente application(_:open:options:), ou scene(_:openURLContexts:) se o seu app usar cenas, para lidar com links de esquema personalizado. Isso inclui links de esquema personalizado abertos a partir de mensagens da Braze |
| Configuração do SDK da Braze | Nenhuma. Por padrão, o SDK abre URLs de esquema personalizado, a menos que braze(_:shouldOpenURL:) retorne false |
Links universais
| Requisito | Detalhes |
|---|---|
| Arquivo AASA | Necessário. Hospede em https://yourdomain.com/.well-known/apple-app-site-association |
| Associated Domains | Adicione applinks:yourdomain.com no Xcode em Signing & Capabilities |
| Método do app delegate | Implemente application(_:continue:restorationHandler:) para lidar com NSUserActivity |
| Configuração do SDK da Braze | Defina configuration.forwardUniversalLinks = true |
| BrazeDelegate (opcional) | Implemente braze(_:shouldOpenURL:) para roteamento personalizado (por exemplo, Branch) |

Se você envia e-mails pela Braze, seu provedor de serviços de e-mail (SendGrid, SparkPost ou Amazon SES) encapsula os links em um domínio de rastreamento de cliques. Você também precisa hospedar o arquivo AASA no seu domínio de rastreamento de cliques, e não apenas no seu domínio principal. Para ver a configuração completa, consulte Links universais e App Links. Se todos os links de e-mail abrirem o app, consulte Todos os links de e-mail abrem o app.
“Open Web URL Inside App”
| Requisito | Detalhes |
|---|---|
| Arquivo AASA | Não é necessário |
| Método do app delegate | Não é necessário. O SDK lida com isso automaticamente |
| Configuração do SDK da Braze | Nenhuma. Selecione Open Web URL Inside App no criador da Campaign |
Quando você precisa de um arquivo AASA
Um arquivo Apple App Site Association (AASA) só é necessário quando você usa links universais. Ele informa ao iOS quais URLs seu app pode processar.
Você precisa de um arquivo AASA quando:
- Você envia deep links em campanhas de e-mail (porque os provedores de serviços de e-mail encapsulam os links em URLs HTTPS de rastreamento de cliques).
- Você envia deep links em campanhas de SMS (porque os links podem ser encurtados para URLs HTTPS).
- Você usa Branch, AppsFlyer ou outro provedor de links (porque eles usam seus próprios domínios HTTPS).
- Você usa links universais de push, mensagens no app ou Content Cards (menos comum, mas possível com
forwardUniversalLinks = true).
Você não precisa de um arquivo AASA quando:
- Você só usa deep links com esquema personalizado (por exemplo,
myapp://) de push, mensagens no app, Content Cards ou banners. - Você usa a opção Open Web URL Inside App.
Para instruções de configuração do AASA, consulte Links universais e App Links.
Quando você precisa de código no app para lidar com links
O método delegado que você implementa depende do tipo de link que está usando e de você precisar ou não de lógica de roteamento personalizada:
| Método delegado | Processa | Quando implementar |
|---|---|---|
BrazeDelegate.braze(_:shouldOpenURL:) |
Todas as URLs abertas pelo SDK da Braze | Você precisa de lógica de roteamento personalizada (por exemplo, Branch, tratamento condicional, análise de dados) para mensagens da Braze |
application(_:open:options:) ou scene(_:openURLContexts:) |
Deep links com esquema personalizado (myapp://) |
Você usa deep links com esquema personalizado de qualquer canal, incluindo mensagens da Braze |
application(_:continue:restorationHandler:) |
Links universais (https://) |
Você usa links universais de e-mail, SMS ou com forwardUniversalLinks = true |
BrazeDelegate.shouldOpenURL versus métodos de abertura de URL do aplicativo
Para notificações por push, mensagens no app, Content Cards e banners, o SDK da Braze chama BrazeDelegate.braze(_:shouldOpenURL:) antes de abrir a URL. O contexto da URL inclui o canal de origem. Use esse método para:
- Encaminhar a URL para um provedor terceirizado (por exemplo, Branch ou AppsFlyer) antes que a Braze a abra
- Registrar dados de análise
- Retornar
falsepara que a Braze não abra a URL
Se você não implementar shouldOpenURL, o padrão do SDK retorna true e a Braze abre a URL. Links com esquema personalizado são abertos pelo sistema, que chama scene(_:openURLContexts:) ou application(_:open:options:) do seu app. Links da web são abertos em uma WebView ou no navegador, dependendo das configurações da mensagem.
Se você implementar shouldOpenURL e retornar false, processe a URL nesse método. A Braze não abre a URL e não a encaminha para os métodos delegados do seu aplicativo ou da sua cena.
Quando a Braze abre um link com esquema personalizado, o iOS chama application(_:open:options:), ou scene(_:openURLContexts:) se o seu app usar cenas. Quando forwardUniversalLinks = true, a Braze passa os links universais diretamente para scene(_:continue:) ou application(_:continue:restorationHandler:). Se os dois estiverem implementados, a Braze chama apenas o método delegado da cena.
Usando o Branch com a Braze
Se você usar o Branch como seu provedor de links, sua configuração exigirá algumas etapas adicionais além da configuração padrão de link universal:
- SDK do Branch: Integre o SDK do Branch seguindo a documentação do Branch.
- Associated Domains: Adicione seu domínio do Branch (por exemplo,
applinks:yourapp.app.link) no Xcode em Signing & Capabilities. - BrazeDelegate: Implemente
braze(_:shouldOpenURL:)para encaminhar os links do Branch para o SDK do Branch. Retornefalsepara que a Braze não abra o URL depois que você fizer o encaminhamento. - Encaminhar links universais: Defina
configuration.forwardUniversalLinks = truena configuração do SDK da Braze.
Para detalhes de implementação e orientações sobre depuração, consulte Branch para deep linking.