Receber links dinâmicos do Firebase no Android

Para receber os links dinâmicos do Firebase que você criou, inclua o SDK do Dynamic Links no seu app e chame o método FirebaseDynamicLinks.getDynamicLink() quando o app for carregado.

Configurar o Firebase e o SDK do Dynamic Links

  • Adicione o Firebase ao projeto do Android. Adicione a dependência do Firebase Dynamic Links ao arquivo build.gradle no nível do app:
    implementation 'com.google.firebase:firebase-dynamic-links:16.1.7'
  • Caso você ainda não tenha conectado o app ao seu projeto do Firebase, faça isso no Firebase console.
  • 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

Como nos links diretos simples, adicione um novo filtro de intent à atividade que processa esses links no app. O filtro de intent precisa capturar links diretos do seu domínio, já que o link dinâmico redirecionará para seu domínio caso o app esteja instalado. Isso é necessário para que ele receba os dados do link dinâmico depois de ser instalado/atualizado na Play Store, além de ser necessário que alguém toque no botão Continuar. No 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 aplicativo inicia a atividade com esse filtro de intent para processar o link.

Para receber o link direto, chame o método getDynamicLink():

Java
Android

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
Android

FirebaseDynamicLinks.getInstance()
        .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 iniciadas pelo link, mesmo que ele esteja disponível no intent usando getIntent().getData(). Com a chamada ao getDynamicLink(), você recupera o link e limpa esses dados. Isso significa que ele é processado apenas uma vez pelo app.

Normalmente, o getDynamicLink() é chamado na atividade principal, bem como em qualquer atividade iniciada por filtros de intent que correspondam ao link.

Análise de registro

Os eventos a seguir são rastreados automaticamente no Google Analytics para Firebase e exibidos no Firebase console.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Para registrar esses eventos, configure o Google Analytics para Firebase antes de recuperar o link direto. Verifique se as seguintes condições são atendidas:

  • Chame o 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 para Firebase:
    • Inclua a dependência do Google Analytics para Firebase. Ela costuma ser adicionada automaticamente pelo plug-in do Gradle google-services.
    • Inclua o arquivo de configuração google-services.json no seu app.
    • Chame FirebaseAnalytics.getInstance() antes de FirebaseDynamicLinks.getDynamicLink().

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 para seu aplicativo no projeto no Firebase console. O Dynamic Links 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 Firebase console. 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.page.link" android:scheme="http"/>
    <data android:host="example.page.link" android:scheme="https"/>
</intent-filter>

Observe que android:host precisa ser definido para o domínio do Dynamic Links, e não o domínio de 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 isso automaticamente para seus domínios do Dynamic Links, mas se você quiser acompanhar essa atividade, abra o arquivo assetlinks.json hospedado no seu domínio do Dynamic Links:

https://YOUR_SUBDOMAIN.page.link/.well-known/assetlinks.json
Todos os nomes de pacote de aplicativos do Firebase precisam ser incluídos.

Agora, o Dynamic Links será enviado diretamente para seu aplicativo. Você poderá receber o link direto e outros dados de link dinâmico ao chamar getDynamicLink() na atividade adicionada ao filtro de intent dos links de apps (conforme descrito em Processar links diretos).

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.