Ir para o console

Receber links dinâmicos do Firebase no Android

Para receber os links dinâmicos do Firebase que você criou, é preciso incluir o SDK do Dynamic Links no seu app e chamar o método FirebaseDynamicLinks.getDynamicLink() quando seu app carregar para receber os dados transmitidos no link dinâmico.

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 seu arquivo de nível de projeto build.gradle, inclua o repositório Maven do Google, tanto nas seções buildscript e allprojects.
  3. Adicione a dependência da biblioteca do Firebase Dynamic Links Android ao seu arquivo Gradle do módulo (nível do app) (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

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

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 ele esteja disponível no intent por meio de 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 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 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:
    • Inclua a dependência do Google Analytics. 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 do seu aplicativo no projeto no Console do Firebase. 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 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>

Observe que android:host precisa ser definido para o domínio do Dynamic Links, e não o domínio do 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_DOMAIN/.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 dos links dinâmicos ao chamar getDynamicLink() na atividade em que você adicionou o filtro de intent dos links de apps, conforme descrito em Processar links diretos.