Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Receba links dinâmicos do Firebase no Android

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Para receber o 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 carregar para obter os dados passados ​​no Dynamic Link.

  1. Se ainda não o fez, adicione o Firebase ao seu projeto Android .

    Ao registrar seu aplicativo, especifique sua chave de assinatura SHA-1. Se você usar 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 ), adicione a dependência para a biblioteca Android do Dynamic Links. Recomendamos usar o Firebase Android BoM para controlar o controle de versão da biblioteca.

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

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.2.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    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 Firebase em sua linha de dependência.

    Observe que, se você usar várias bibliotecas do Firebase em seu aplicativo, recomendamos usar o 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-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.2.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 Firebase em sua linha de dependência.

    Observe que, se você usar várias bibliotecas do Firebase em seu aplicativo, recomendamos usar o 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.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    
  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 intenção à atividade que lida com links diretos para seu aplicativo. O filtro de intenção deve capturar links diretos de seu domínio, pois o link dinâmico redirecionará para seu domínio se seu aplicativo estiver instalado. Isso é necessário para que seu aplicativo receba os dados do Dynamic Link depois que ele for instalado/atualizado na Play Store e um toque 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 abrirem um link dinâmico com um link direto para o esquema e o host especificados, seu aplicativo iniciará a atividade com esse filtro de intenção para lidar com 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 esteja disponível a partir da intenção usando getIntent().getData() . Chamar getDynamicLink() recupera o link e limpa esses dados para que sejam processados ​​apenas uma vez pelo seu aplicativo.

Você normalmente chama getDynamicLink() na atividade principal, bem como qualquer atividade iniciada por filtros de intenção que correspondam ao link.

Análise de registro

Os eventos a seguir podem ser 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, 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 links profundos.
  • Configure e use o Google Analytics:
    • Inclua a dependência do Google Analytics. Isso geralmente é adicionado automaticamente pelo plug-in Gradle do google-services .
    • 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 superior, 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 para seu aplicativo em seu projeto no Firebase console . O Dynamic Links cuidará da configuração da associação de site do App Links para seu domínio do Dynamic Links.

Adicione um filtro de intenção verificado automaticamente à atividade que manipulará o link dinâmico, definindo o host para o domínio de links dinâmicos 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 o android:host deve ser definido para seu domínio de links dinâmicos, e não para o domínio de seu link direto.

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

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

Os 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 de links do aplicativo (conforme descrito em Lidar com links diretos ).

Observação: como a invocação por meio de links do aplicativo leva o usuário diretamente ao aplicativo, um link dinâmico não pode atender à versão mínima exigida. Assim que o aplicativo for aberto, você precisará comparar a versão mínima do link dinâmico ( getminimumappversion ) com PackageInfo.versionCode e redirecionar o usuário para atualizar o aplicativo, se necessário, usando getUpdateAppIntent .