É possível criar Dynamic Links curtos ou longos com a API Firebase Dynamic Links Builder. Essa API aceita um Dynamic Link longo ou um objeto que contenha parâmetros Dynamic Link e retorna URLs como os exemplos a seguir:
https://example.com/link/WXYZ https://example.page.link/WXYZ
Configurar o Firebase e o SDK do Dynamic Links
Antes de criar Dynamic Links no app Android, inclua o SDK do Firebase. Se o app estiver configurado para receber Dynamic Links, você já concluiu essas etapas e pode pular esta seção.
Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.
Ao registrar seu aplicativo, especifique sua chave de assinatura SHA-1. Se você usa links de apps, também precisa especificar sua chave SHA-256.
-
No arquivo Gradle do módulo (nível do app) (geralmente
<project>/<app-module>/build.gradle.kts
ou<project>/<app-module>/build.gradle
), adicione a dependência da biblioteca do Dynamic Links para Android. Recomendamos o uso do Firebase Android BoM para controlar o controle de versões da biblioteca.Para uma experiência ideal com o Dynamic Links, recomendamos ativar o Google Analytics no seu projeto do Firebase e adicionar o SDK do Firebase para Google Analytics ao seu app.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links' implementation 'com.google.firebase:firebase-analytics' }
Com a Firebase Android BoM, seu app sempre vai usar versões compatíveis das bibliotecas do Firebase para Android.
(Alternativa) Adicionar dependências das bibliotecas do Firebase sem usar o BoM
Se você preferir não usar o Firebase BoM, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.
Se você usa várias bibliotecas do Firebase no app, recomendamos utilizar o BoM para gerenciar as versões delas, porque isso ajuda a garantir a compatibilidade de todas as bibliotecas.
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links:22.1.0' implementation 'com.google.firebase:firebase-analytics:22.1.2' }
- No console do Firebase, abra a seção Dynamic Links.
-
Se você ainda não aceitou os termos de serviço e definiu um domínio para o Dynamic Links, faça isso quando solicitado.
Se você já tiver um domínio Dynamic Links, anote-o. É necessário fornecer um domínio Dynamic Links ao criar Dynamic Links de maneira programática.
- Recomendado: especifique os padrões de URL permitidos nos seus links diretos e links de fallback. Ao fazer isso, você evita que pessoas não autorizadas criem Dynamic Links que redirecionam para sites que você não controla no seu domínio. Consulte Permitir padrões de URL específicos.
Use o console Firebase
Caso você queira fazer testes ou facilitar para sua equipe de marketing a criação de um link a ser usado em uma postagem de mídia social, acesse o Console do Firebase e siga o formulário passo a passo para gerar um Dynamic Link único da maneira mais simples.
Criar um Dynamic Link com base em parâmetros
Para criar um Dynamic Link, crie um novo objeto DynamicLink
com o
builder que especifica os parâmetros Dynamic Link com os métodos do Builder. Em seguida, chame buildDynamicLink
ou buildShortDynamicLink
.
No exemplo mínimo a seguir, criamos um Dynamic Link longo para
https://www.example.com/
, que é aberto no app Android e no app
com.example.ios
no iOS:
Kotlin+KTX
val dynamicLink = Firebase.dynamicLinks.dynamicLink { link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" // Open links with this app on Android androidParameters { } // Open links with com.example.ios on iOS iosParameters("com.example.ios") { } } val dynamicLinkUri = dynamicLink.uri
Java
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") // Open links with this app on Android .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build()) // Open links with com.example.ios on iOS .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build()) .buildDynamicLink(); Uri dynamicLinkUri = dynamicLink.getUri();
Para criar um Dynamic Link curto, crie um DynamicLink
da
mesma maneira e chame buildShortDynamicLink
. A criação de um link curto requer uma chamada de rede. Por isso, em vez de gerar o link diretamente, buildShortDynamicLink
retorna um Task
, disponibilizando o link curto quando a solicitação é concluída. Exemplo:
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync { link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" // Set parameters // ... }.addOnSuccessListener { (shortLink, flowchartLink) -> // You'll need to import com.google.firebase.dynamiclinks.component1 and // com.google.firebase.dynamiclinks.component2 // Short link created processShortLink(shortLink, flowchartLink) }.addOnFailureListener { // Error // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") // Set parameters // ... .buildShortDynamicLink() .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() { @Override public void onComplete(@NonNull Task<ShortDynamicLink> task) { if (task.isSuccessful()) { // Short link created Uri shortLink = task.getResult().getShortLink(); Uri flowchartLink = task.getResult().getPreviewLink(); } else { // Error // ... } } });
Por padrão, os Dynamic Links curtos são gerados com sufixos de link de 17 caracteres que
torna extremamente improvável que alguém consiga adivinhar um Dynamic Link válido. Se
não há problemas em um usuário conseguir descobrir um link curto no seu caso de uso,
convém gerar sufixos longos o suficiente para serem
exclusivos. Nesse caso, basta enviar ShortDynamicLink.Suffix.SHORT
ao método buildShortDynamicLink
:
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) { // Set parameters // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() // ... .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT); // ...
Dynamic Link parâmetros
Você pode usar a API Builder Dynamic Link para criar Dynamic Links com qualquer um dos parâmetros compatíveis. Consulte a referência da API para ver mais detalhes.
O exemplo abaixo cria um Dynamic Link com vários parâmetros comuns definidos:
Kotlin+KTX
val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync link = Uri.parse("https://www.example.com/") domainUriPrefix = "https://example.page.link" androidParameters("com.example.android") { minimumVersion = 125 } iosParameters("com.example.ios") { appStoreId = "123456789" minimumVersion = "1.0.1" } googleAnalyticsParameters { source = "orkut" medium = "social" campaign = "example-promo" } itunesConnectAnalyticsParameters { providerToken = "123456" campaignToken = "example-promo" } socialMetaTagParameters { title = "Example of a Dynamic Link" description = "This link works whether the app is installed or not!" } }
Java
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) .setDomainUriPrefix("https://example.page.link") .setAndroidParameters( new DynamicLink.AndroidParameters.Builder("com.example.android") .setMinimumVersion(125) .build()) .setIosParameters( new DynamicLink.IosParameters.Builder("com.example.ios") .setAppStoreId("123456789") .setMinimumVersion("1.0.1") .build()) .setGoogleAnalyticsParameters( new DynamicLink.GoogleAnalyticsParameters.Builder() .setSource("orkut") .setMedium("social") .setCampaign("example-promo") .build()) .setItunesConnectAnalyticsParameters( new DynamicLink.ItunesConnectAnalyticsParameters.Builder() .setProviderToken("123456") .setCampaignToken("example-promo") .build()) .setSocialMetaTagParameters( new DynamicLink.SocialMetaTagParameters.Builder() .setTitle("Example of a Dynamic Link") .setDescription("This link works whether the app is installed or not!") .build()) .buildDynamicLink(); // Or buildShortDynamicLink()
É possível definir parâmetros Dynamic Link com os seguintes métodos:
Parâmetros de link dinâmico | |
---|---|
setLink |
O link que será aberto pelo app. É possível especificar um URL que pode ser processado pelo seu app, geralmente o conteúdo ou payload de um app, que pode iniciar uma lógica específica do app, como creditar o usuário com um cupom ou exibir uma tela de boas-vindas. Esse link precisa ser um URL formatado corretamente, ter a codificação de URL adequada e usar HTTP ou HTTPS. Além disso, ele não pode ser outro link dinâmico. |
setDomainUriPrefix | Seu prefixo de URL Dynamic Link, que pode ser encontrado no console do Firebase. Um domínio
Dynamic Link tem a seguinte aparência:
https://example.com/link https://example.page.link |
AndroidParameters | |
---|---|
setFallbackUrl | O link a ser aberto quando o app não estiver instalado. Especifique isso para realizar outra ação que não seja instalar o app da Play Store quando ele não estiver instalado, como abrir a versão Web para dispositivos móveis com o conteúdo ou exibir uma página promocional para o app. |
setMinimumVersion | O versionCode da versão mínima do app que pode abrir o link. Se o app instalado for uma versão mais antiga, o usuário será direcionado para a Play Store para atualizá-lo. |
IosParameters | |
---|---|
setAppStoreId | O ID do app na App Store, usado para direcionar os usuários à App Store quando o app não estiver instalado. |
setFallbackUrl | O link a ser aberto quando o app não estiver instalado. Especifique isso para realizar outra ação que não seja instalar o app da App Store quando ele não estiver instalado. A ação pode ser abrir a versão Web para dispositivos móveis com o conteúdo ou exibir uma página promocional para o app. |
setCustomScheme | O esquema de URL personalizado do seu app, se definido de modo diferente do ID do pacote do seu app. |
setIpadFallbackUrl | O link a ser aberto em iPads quando o app não estiver instalado. Especifique isso para realizar outra ação, que não seja instalar o app da App Store quando ele não estiver instalado. A ação pode ser abrir a versão Web com o conteúdo ou exibir uma página promocional para o app. |
setIpadBundleId | O ID do pacote do app para iOS que é usado em iPads para abrir o link. O app precisa estar conectado ao seu projeto pela Página de visão geral no Console do Firebase. |
setMinimumVersion | O número da versão mínima do seu app que pode abrir o link. Essa flag é transmitida para o seu app no momento em que ele é aberto, e seu app precisa decidir o que fazer. |
NavigationInfoParameters | |
---|---|
setForcedRedirectEnabled | Se configurado como "1", ignore a página de visualização do app quando o Dynamic Link for aberto e redirecione-o para o app ou a loja. Na página de visualização do app (ativada por padrão), é possível enviar usuários de maneira confiável para o destino mais apropriado, quando eles abrem Dynamic Links nos apps. Ainda assim, se você espera que um Dynamic Link seja aberto apenas em apps que possam abrir esses Dynamic Links de maneira confiável sem esta página, é possível desativar ela usando este parâmetro. Esse parâmetro afetará o comportamento do Dynamic Link somente no iOS. |
SocialMetaTagParameters | |
---|---|
setTitle | O título a ser usado quando o Dynamic Link é compartilhado em uma postagem de mídia social. |
setDescription | A descrição a ser usada quando o Dynamic Link é compartilhado em uma postagem de mídia social. |
setImageUrl | O URL para uma imagem relacionada a este link. A imagem precisa ser de pelo menos 300 x 200 px e ter menos de 300 KB. |
GoogleAnalyticsParameters | |
---|---|
setSource setMedium setCampaign setTerm setContent |
Parâmetros de análise para o Google Play. Esses parâmetros (utm_source , utm_medium , utm_campaign , utm_term , utm_content ) são transmitidos para a Play Store e anexados ao payload do link.
|
ItunesConnectAnalyticsParameters | |
---|---|
setProviderToken setAffiliateToken setCampaignToken |
Parâmetros de análise para o iTunes Connect. Esses parâmetros (pt , at , ct ) são transmitidos para a App Store. |
Encurtar um Dynamic Link longo
Para encurtar um Dynamic Link longo, especifique o URL do Dynamic Link usando
setLongLink
em vez de definir parâmetros com os métodos do outro builder:
Kotlin+KTX
val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync { longLink = Uri.parse( "https://example.page.link/?link=" + "https://www.example.com/&apn=com.example.android&ibn=com.example.ios", ) }.addOnSuccessListener { (shortLink, flowChartLink) -> // You'll need to import com.google.firebase.dynamiclinks.component1 and // com.google.firebase.dynamiclinks.component2 // Short link created processShortLink(shortLink, flowChartLink) }.addOnFailureListener { // Error // ... }
Java
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios")) .buildShortDynamicLink() .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() { @Override public void onComplete(@NonNull Task<ShortDynamicLink> task) { if (task.isSuccessful()) { // Short link created Uri shortLink = task.getResult().getShortLink(); Uri flowchartLink = task.getResult().getPreviewLink(); } else { // Error // ... } } });