Receba links dinâmicos do Firebase no Android

Para receber os Firebase Dynamic Links que você criou , você deve incluir o SDK do Dynamic Links em seu aplicativo e chamar o método FirebaseDynamicLinks.getDynamicLink() quando seu aplicativo for carregado para obter os dados transmitidos no Dynamic Link.

  1. Adicione o Firebase ao seu projeto Android , caso ainda não o tenha feito.

    Ao registrar seu aplicativo, especifique sua chave de assinatura SHA-1. Se você usa App Links, especifique também sua chave SHA-256.

  2. No arquivo Gradle do módulo (nível do aplicativo) (geralmente <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle ), adicione a dependência para os Dynamic Links biblioteca para Android. Recomendamos usar o Firebase Android BoM para controlar o controle de versão da biblioteca.

    Para uma experiência ideal com Dynamic Links, recomendamos ativar o Google Analytics em seu projeto do Firebase e adicionar o SDK do Firebase para Google Analytics ao seu aplicativo.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.0"))
    
        // Add 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 o Firebase Android BoM , seu aplicativo sempre usará versões compatíveis das bibliotecas do Firebase Android.

    (Alternativa) Adicionar dependências da biblioteca Firebase sem usar o BoM

    Se você optar por não usar o Firebase BoM, deverá especificar cada versão da biblioteca do Firebase em sua linha de dependência.

    Observe que se você usa várias bibliotecas do Firebase no seu aplicativo, é altamente recomendável usar a BoM para gerenciar as versões da biblioteca, o que garante que todas as versões sejam compatíveis.

    dependencies {
        // Add 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.2.0'
        implementation 'com.google.firebase:firebase-analytics:21.6.1'
    }
    
    Procurando um módulo de biblioteca específico para Kotlin? A partir de outubro de 2023 (Firebase BoM 32.5.0) , tanto os desenvolvedores Kotlin quanto os Java podem depender do módulo da biblioteca principal (para obter detalhes, consulte o FAQ sobre esta iniciativa ).
  3. No console do Firebase , abra a seção Dynamic Links . Aceite os termos de serviço se for solicitado a fazê-lo.

Assim como acontece com links diretos simples , você deve adicionar um novo filtro de intent à atividade que gerencia links diretos para seu aplicativo. O filtro de intent deve capturar links diretos do seu domínio, já que o Dynamic Link redirecionará para o seu domínio se o seu aplicativo estiver instalado. Isso é necessário para que seu aplicativo receba os dados do Dynamic Link depois de ser instalado/atualizado na Play Store e 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 host especificados, seu aplicativo iniciará a atividade com esse filtro de intent para processar o link.

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

Kotlin+KTX

Firebase.dynamicLinks
    .getDynamicLink(intent)
    .addOnSuccessListener(this) { pendingDynamicLinkData: 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) }

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);
            }
        });

Você deve chamar getDynamicLink() em todas as atividades que possam ser iniciadas pelo link, mesmo que o link possa estar disponível na intenção usando getIntent().getData() . Chamar getDynamicLink() recupera o link e limpa esses dados para que sejam processados ​​apenas uma vez pelo seu aplicativo.

Normalmente você chama getDynamicLink() na atividade principal, bem como em quaisquer atividades iniciadas por filtros de intent que correspondam ao link.

Análise de registros

Os eventos a seguir podem ser rastreados automaticamente no Google Analytics e mostrados no console do Firebase.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Para registrar esses eventos, você precisa configurar o Google Analytics antes de recuperar o link direto. Verifique se as seguintes condições foram atendidas:

  • Chame FirebaseDynamicLinks.getDynamicLink() nos pontos de entrada do seu aplicativo:
    • Atividades do lançador. 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:
    • Inclui a dependência do Google Analytics. Isso geralmente é adicionado automaticamente pelo plugin google-services Gradle.
    • Inclua o arquivo de configuração google-services.json em seu aplicativo.
    • Chame FirebaseAnalytics.getInstance() antes de chamar FirebaseDynamicLinks.getDynamicLink() .

No Android 6.0 (API de nível 23) e versões posteriores, você pode configurar seu aplicativo para lidar com Dynamic Links diretamente quando seu aplicativo já estiver instalado usando Android App Links .

Certifique-se de ter adicionado a impressão digital do certificado SHA256 do seu aplicativo ao projeto no console do Firebase . Dynamic Links cuidará da configuração da associação do site App Links para seu domínio Dynamic Links.

Adicione um filtro de intent verificado automaticamente à atividade que manipulará o Dynamic Link, definindo o host para o domínio 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.com/link" android:scheme="http"/>
    <data android:host="example.com/link" android:scheme="https"/>
</intent-filter>

Observe que android:host deve ser definido para seu domínio do Dynamic Links, e não para o domínio do seu link direto.

Todos os filtros de intenção autoVerify em seu manifesto devem ser registrados para que os App Links sejam ativados. O Firebase lida com isso automaticamente para seus domínios do Dynamic Links, mas você pode verificar isso abrindo o arquivo assetlinks.json hospedado em seu domínio do Dynamic Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Todos os nomes de pacotes dos seus aplicativos do Firebase devem ser incluídos.

Links dinâmicos agora serão enviados diretamente para seu aplicativo. Você poderá obter o link direto e outros dados do link dinâmico chamando getDynamicLink() na atividade à qual você adicionou o filtro de intenção do App Links (conforme descrito em Lidar com links diretos ).

Observação: como a invocação por meio de App Links leva o usuário diretamente ao aplicativo, um Dynamic Link não pode respeitar a versão mínima exigida. Assim, depois que o aplicativo for aberto, você precisará comparar a versão mínima do Dynamic Link ( getminimumappversion ) com PackageInfo.versionCode e redirecionar o usuário para atualizar o aplicativo, se necessário, usando getUpdateAppIntent .