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.
Configurar o Firebase e o SDK do Dynamic Links
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.
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' }
- No console do Firebase , abra a seção Dynamic Links . Aceite os termos de serviço se for solicitado a fazê-lo.
Adicione um filtro de intenção para links diretos
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.
Lidar com links profundos
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 usandogetIntent().getData()
. ChamargetDynamicLink()
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 chamarFirebaseDynamicLinks.getDynamicLink()
.
Manipulando links dinâmicos usando links de aplicativos
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 arquivoassetlinks.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 .
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Last updated 2023-02-07 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Não contém as informações de que eu preciso" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Muito complicado / etapas demais" },{ "type": "thumb-down", "id": "outOfDate", "label":"Desatualizado" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema na tradução" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Problema com as amostras / o código" },{ "type": "thumb-down", "id": "otherDown", "label":"Outro" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Fácil de entender" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Meu problema foi resolvido" },{ "type": "thumb-up", "id": "otherUp", "label":"Outro" }]