Per ricevere l'elemento Firebase Dynamic Links
creato, devi includere l'SDK Dynamic Links nella tua app e chiamare il
metodo FirebaseDynamicLinks.getDynamicLink()
quando viene caricata l'app per
ottenere i dati trasmessi in Dynamic Link.
Configura Firebase e l'SDK Dynamic Links
Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android.
Quando registri l'app, specifica la chiave di firma SHA-1. Se utilizzi Link app, specifica anche la chiave SHA-256.
-
Nel file Gradle del modulo (a livello di app) (di solito
<project>/<app-module>/build.gradle.kts
o<project>/<app-module>/build.gradle
), aggiungi la dipendenza per la libreria Dynamic Links per Android. Ti consigliamo di utilizzare Firebase Android BoM per controllare la versione della libreria.Per un'esperienza ottimale con Dynamic Links, ti consigliamo di attivare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.5.1")) // 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' }
Se utilizzi Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.
(Alternativa) Aggiungi dipendenze della libreria Firebase senza utilizzare BoM
Se scegli di non utilizzare Firebase BoM, devi specificare ogni versione della libreria Firebase nella relativa riga di dipendenza.
Tieni presente che se nella tua app utilizzi più librerie Firebase, ti consigliamo vivamente di utilizzare BoM per gestire le versioni delle librerie, in modo da garantire la compatibilità di tutte le versioni.
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:22.1.0' implementation 'com.google.firebase:firebase-analytics:22.1.2' }
- Nella console Firebase, apri la sezione Dynamic Links. Se ti viene richiesto, accetta i Termini di servizio.
Aggiungere un filtro per intent per i link diretti
Come per i
link diretti semplici, devi aggiungere un nuovo filtro per intent all'attività che gestisce
i link diretti per la tua app. Il filtro per intent dovrebbe rilevare i link diretti del tuo dominio, poiché
Dynamic Link reindirizzerà al tuo dominio se l'app è installata. Questa operazione è necessaria per consentire alla tua app
di ricevere i dati di Dynamic Link dopo l'installazione/l'aggiornamento dal Play Store e il semplice tocco sul pulsante
Continua. In 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 gli utenti aprono un Dynamic Link con un link diretto allo schema e all'host che hai specificato, la tua app avvierà l'attività con questo filtro per intent per gestire il link.
Gestire i link diretti
Per ricevere il link diretto, chiama il metodo 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); } });
Devi chiamare getDynamicLink()
in ogni attività che potrebbe essere
avviata dal link, anche se il link potrebbe essere disponibile dall'intent
utilizzando getIntent().getData()
. La chiamata a getDynamicLink()
recupera il link e cancella i dati in modo che vengano elaborati solo una volta
dall'app.
In genere, chiami getDynamicLink()
nell'attività principale, nonché in tutte le attività avviate dai filtri intent corrispondenti al link.
Registra dati e analisi
I seguenti eventi possono essere monitorati automaticamente in Google Analytics e mostrati nella console Firebase.
dynamic_link_app_open
dynamic_link_first_open
dynamic_link_app_update
Per registrare questi eventi, devi configurare Google Analytics prima di recuperare il link diretto. Verifica che siano soddisfatte le seguenti condizioni:
- Chiama
FirebaseDynamicLinks.getDynamicLink()
nei punti di accesso dell'app: - Attività di Avvio app, ad esempio:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
. - Punti di accesso alle attività, ad es.:
onStart()
,onCreate()
. - Attività relative ai link diretti.
- Configura e usa Google Analytics:
- Includi la dipendenza Google Analytics. In genere viene aggiunto automaticamente dal
google-services
plug-in Gradle. - Includi il
file di configurazione
google-services.json
nell'app. - Chiama
FirebaseAnalytics.getInstance()
prima di chiamareFirebaseDynamicLinks.getDynamicLink()
.
Gestione di Dynamic Links utilizzando i link alle app
Su Android 6.0 (livello API 23) e versioni successive, puoi configurare la tua app in modo che gestisca Dynamic Links direttamente quando è già installata utilizzando i link per app Android.
Assicurati di aver aggiunto l'impronta digitale del certificato SHA256 per la tua app al progetto nella console Firebase. Dynamic Links gestirà la configurazione dell'associazione con il sito web dei link dell'app per il tuo dominio Dynamic Links.
Aggiungi un filtro per intent verificato automaticamente all'attività che gestirà Dynamic Link, impostando
l'host sul dominio Dynamic Links del progetto come
trovato nella console Firebase. In
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>
Tieni presente che android:host
deve essere impostato sul tuo dominio Dynamic Links e non su quello
del tuo link diretto.
Tutti i autoVerify
filtri per intent nel file manifest devono essere registrati affinché i link
dell'app possano essere utilizzati. Firebase gestisce automaticamente questa operazione per i tuoi domini Dynamic Links, ma puoi verificarlo aprendo il file assetlinks.json
ospitato sul tuo dominio Dynamic Links:
https://YOUR_DOMAIN/.well-known/assetlinks.json
Ora Dynamic Links verrà inviato direttamente alla tua app. Potrai ottenere il link diretto e altri dati
di Dynamic Link chiamando getDynamicLink()
nell'attività a cui hai aggiunto il filtro per intent
dei link app (come descritto in
Gestire i link diretti).
Nota: poiché la chiamata tramite link dell'app porta l'utente direttamente all'app, un link dinamico non può soddisfare la versione minima richiesta. Pertanto, una volta aperta l'app, devi confrontare la versione minima del link dinamico ( getminimumappversion) con PackageInfo.versionCode e reindirizzare l'utente a eseguire l'upgrade dell'app, se necessario, utilizzando getUpdateAppIntent.