Para receber o Firebase Dynamic Links que
você criou, inclua o SDK do Dynamic Links no app e chame o método
FirebaseDynamicLinks.getDynamicLink()
quando o app for carregado para
receber os dados transmitidos no link dinâmico.
Configurar o Firebase e o SDK do Dynamic Links
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 Android do Dynamic Links. Para gerenciar o controle de versões das bibliotecas, recomendamos usar a BoM do Firebase para Android.Para uma experiência ideal com o Dynamic Links, recomendamos ativar o Google Analytics no seu projeto e adicionar o SDK do Firebase para Analytics ao seu app.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // 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-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Com a BoM do Firebase para Android, 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 a BoM
Se você preferir não usar a BoM do Firebase, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.
Se você usa várias bibliotecas do Firebase no seu app, recomendamos utilizar a 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-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // 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 BoM do Firebase para Android, 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 a BoM
Se você preferir não usar a BoM do Firebase, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.
Se você usa várias bibliotecas do Firebase no seu app, recomendamos utilizar a 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:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.3.0' }
- No Console do Firebase, abra a seção Dynamic Links. Se solicitado, aceite os termos de serviço.
Adicionar um filtro de intent para links diretos
Assim como no caso de
links diretos simples, você precisa adicionar um novo filtro de intent à atividade que envia
os links diretos ao app. Esse filtro precisa capturar os links diretos do seu domínio, já que o
link dinâmico será redirecionado ao seu domínio, se o app estiver instalado. Isso é necessário para que o aplicativo
receba os dados do link dinâmico depois de ser instalado/atualizado na Play Store e depois de alguém tocar no
botão "Continuar". Em AndroidManifest.xml
:
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="example.com" android:scheme="https"/> </intent-filter>
Quando os usuários abrem um link dinâmico com um link direto para o esquema e o host especificados, seu app inicia a atividade usando esse filtro de intent a fim de processar o link.
Processar links diretos
Para receber o link direto, chame o método getDynamicLink()
:
Kotlin+KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? -> // Get deep link from result (may be null if no link is found) var deepLink: Uri? = null if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.link } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... } .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }
Java
FirebaseDynamicLinks.getInstance() .getDynamicLink(getIntent()) .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { @Override public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) { // Get deep link from result (may be null if no link is found) Uri deepLink = null; if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.getLink(); } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... // ... } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "getDynamicLink:onFailure", e); } });
Chame o getDynamicLink()
em todas as atividades que podem ser
iniciadas pelo link, mesmo que o link seja disponibilizado na intent
usando getIntent().getData()
. A chamada ao getDynamicLink()
recupera o link e limpa os dados. Com isso, ele é processado apenas uma vez pelo
app.
O getDynamicLink()
precisa ser chamado na atividade principal e
em todas as atividades iniciadas pelos filtros de intent que correspondem ao link.
Análise de registro
Os eventos a seguir são rastreados automaticamente no Google Analytics e exibidos no Console do Firebase.
dynamic_link_app_open
dynamic_link_first_open
dynamic_link_app_update
Para registrar esses eventos, configure o Google Analytics antes de recuperar o link direto. Verifique se as seguintes condições são atendidas:
- Chame
FirebaseDynamicLinks.getDynamicLink()
nos pontos de entrada do app: - Atividades da tela de início. Por exemplo:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
. - Pontos de entrada da atividade. Por exemplo:
onStart()
,onCreate()
. - Atividades de link direto
- Configure e use o Google Analytics:
- Inclua a dependência do Google Analytics. Em geral, ela é adicionada automaticamente pelo
plug-in
google-services
do Gradle. - Inclua o
arquivo de configuração
google-services.json
no seu app. - Chame
FirebaseAnalytics.getInstance()
antes deFirebaseDynamicLinks.getDynamicLink()
.
Como processar Dynamic Links usando links de apps
No Android 6.0 (nível 23 da API) e versões mais recentes, é possível configurar seu app para processar Dynamic Links diretamente, caso o app já esteja instalado. Basta usar os Links do app Android.
Adicione a impressão digital do certificado SHA256 do seu aplicativo no projeto no Console do Firebase. O Dynamic Links vai processar a configuração da associação do site de links de apps para seu domínio da ferramenta.
Adicione um filtro de intent verificado automaticamente à atividade que vai processar o link dinâmico. Basta configurar o
host no domínio do Dynamic Links do seu projeto, conforme
encontrado no Console do Firebase. No
AndroidManifest.xml
:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="example.com/link" android:scheme="http"/> <data android:host="example.com/link" android:scheme="https"/> </intent-filter>
O android:host
precisa ser definido para o domínio do Dynamic Links, e não para o domínio
do seu link direto.
Todos os filtros de intent autoVerify
no seu manifesto precisam ser registrados para que os links
do app sejam ativados. O Firebase processa esses filtros automaticamente para seus domínios do Dynamic Links, mas é possível
verificar essas informações abrindo o arquivo assetlinks.json
hospedado no domínio correspondente:
https://YOUR_DOMAIN/.well-known/assetlinks.jsonTodos os pacotes dos apps do Firebase precisam ser incluídos.
Agora, os Dynamic Links serão enviados diretamente ao app. É possível conferir o link direto e outros
dados do link dinâmico chamando getDynamicLink()
na atividade a que você adicionou o filtro de intent
dos links de apps, conforme descrito em
Processar links diretos.
Observação: como invocar com os links do app faz com que o usuário seja direcionado diretamente ao aplicativo, um link dinâmico não atende à versão mínima necessária. Quando o app for aberto, será necessário comparar a versão mínima do link dinâmico ( getminimumappversion) com os valores PackageInfo.versionCode e redirecionar o usuário para fazer upgrade do app, caso seja necessário, usando getUpdateAppIntent.