Ir para o console

Receber links dinâmicos do Firebase Dynamic Links no Android

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

  1. 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.

  2. No arquivo build.gradle no nível do projeto, inclua o repositório Maven do Google nas seções buildscript e allprojects.
  3. Adicione a dependência da biblioteca do Firebase Dynamic Links para Android ao arquivo do Gradle (no nível de aplicativo) do módulo, geralmente app/build.gradle:
    implementation 'com.google.firebase:firebase-dynamic-links:19.0.0'
  4. 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.

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

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 que podem ser iniciadas pelo link, mesmo que o link seja disponibilizado no intent por meio de 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 de FirebaseDynamicLinks.getDynamicLink().

    No Android 6.0 (nível 23 da API) e posterior, é possível configurar seu app 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 app ao projeto no Console do Firebase. O Dynamic Links processará as configurações da associação de site dos links de aplicativos 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.json
    Todos os nomes de pacote dos seus apps do Firebase precisam ser incluídos.

    Agora, os links dinâmicos serão enviados diretamente ao seu app. Você poderá ver o link direto e outros dados do Dynamic Links chamando getDynamicLink() na atividade a que você adicionou o filtro de intent dos links de aplicativos, conforme descrito em Processar links diretos.