O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

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

  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. 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. Além disso, como parte da configuração do Analytics, você precisa adicionar o SDK do Firebase para Google Analytics ao seu app.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:26.2.0')
    
        // 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 da biblioteca do Firebase sem usar a BoM.

    Se você preferir não usar a BoM do Firebase, especifique cada versão da biblioteca 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 versões de bibliotecas, o que garante a compatibilidade de todas as versões..

    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:19.1.1'
        implementation 'com.google.firebase:firebase-analytics:18.0.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:26.2.0')
    
        // 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 da biblioteca do Firebase sem usar a BoM.

    Se você preferir não usar a BoM do Firebase, especifique cada versão da biblioteca do Firebase na linha de dependência correspondente.

    Caso você use várias bibliotecas do Firebase no seu app, recomendamos optar pela BoM para gerenciar versões de bibliotecas, o que garante a compatibilidade de todas as versões.

    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:19.1.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:18.0.0'
    }
    
  3. No Console do Firebase, abra a seção Dynamic Links. Se solicitado, aceite os termos de serviço.

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+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 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 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>

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 Dynamic Links serão enviados diretamente ao seu app. Você poderá ver o link direto e outros dados do Dynamic Link chamando getDynamicLink() na atividade a que você adicionou o filtro de intent dos links de aplicativos, conforme descrito em Processar links diretos.