Se você quiser ver os links dinâmicos do Firebase Dynamic Links que criou, inclua o SDK do Dynamic Links no seu app e chame o método FirebaseDynamicLinks.getDynamicLink()
quando o aplicativo carregar para receber os dados transmitidos no link.
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.
-
Usando a BoM do Firebase para Android, declare a dependência da biblioteca Android do Dynamic Links no seu arquivo do Gradle (nível do app) do módulo, que geralmente é
app/build.gradle
.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.
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:29.3.1') // Declare 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' }
Ao usar a BoM do Firebase para Android, seu app sempre usará versões compatíveis das bibliotecas do Firebase para Android.
(Alternativa) Declare as 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.
Caso você use várias bibliotecas do Firebase no seu app, recomendamos usar a BoM para gerenciar as versões dessas bibliotecas para garantir a compatibilidade de todas elas.
dependencies { // Declare 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.0.1' implementation 'com.google.firebase:firebase-analytics:20.1.2' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:29.3.1') // Declare 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' }
Ao usar a BoM do Firebase para Android, seu app sempre usará versões compatíveis das bibliotecas do Firebase para Android.
(Alternativa) Declare as 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.
Caso você use várias bibliotecas do Firebase no seu app, recomendamos usar a BoM para gerenciar as versões dessas bibliotecas para garantir a compatibilidade de todas elas.
dependencies { // Declare 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.0.1' implementation 'com.google.firebase:firebase-analytics-ktx:20.1.2' }
- 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 para os links diretos simples, você precisa adicionar um novo filtro de intent à atividade que envia os links diretos ao seu aplicativo. O filtro de intent precisará 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()
:
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); } });
Kotlin+KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { 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) }
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 o
FirebaseAnalytics.getInstance()
antes deFirebaseDynamicLinks.getDynamicLink()
.
Como processar o Dynamic Links usando links de aplicativos
No Android 6.0 (nível 23 da API) e posterior, é possível configurar seu aplicativo para processar links dinâmicos diretamente caso ele já esteja instalado. Basta usar os links de aplicativos Android.
Adicione a impressão digital do certificado SHA256 do seu aplicativo no projeto no Console do Firebase. Os Dynamic Links vão processar a configuração da associação do site de links de apps para seu domínio do Dynamic Links.
Adicione um filtro de intent verificado automaticamente à atividade que 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 de aplicativo sejam ativados. O Firebase processa esses filtros automaticamente para seus domínios do Dynamic Links, mas você pode conferir abrindo o arquivo assetlinks.json
hospedado no seu domínio correspondente:
https://YOUR_DOMAIN/.well-known/assetlinks.jsonTodos os nomes de pacote dos seus apps do Firebase precisam ser incluídos.
Agora, os Dynamic Links serão enviados diretamente ao seu app. Vai ser possível ver o link direto e outros
dados do link dinâmico chamando getDynamicLink()
na atividade em 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.