Per ricevere i Firebase Dynamic Links creati,
devi includere l'SDK Dynamic Links nella tua app e richiamare il metodo
FirebaseDynamicLinks.getDynamicLink()
al caricamento dell'app
ottenere i dati passati nel link dinamico.
Configura Firebase e l'SDK di Dynamic Links
Installa e inizializza gli SDK Firebase per Flutter se non l'hai ancora fatto.
Dalla directory principale del progetto Flutter, esegui il seguente comando per installare il plug-in Dynamic Links:
flutter pub add firebase_dynamic_links
Se stai creando un'app per Android, apri la pagina Impostazioni progetto della Console Firebase e assicurati di aver specificato la chiave di firma SHA-1. Se utilizzi Link per app, specifica anche la chiave SHA-256.
Integrazione della piattaforma
Completa i seguenti passaggi per l'integrazione delle piattaforme per le tue piattaforme per sviluppare la tua app.
Android
Su Android, devi aggiungere un nuovo filtro per intent che rilevi i link diretti del tuo dominio, poiché
Il link dinamico reindirizzerà al tuo dominio se l'app è installata. Questo è necessario affinché l'app riceva i dati dei link dinamici dopo l'installazione/l'aggiornamento dal Play Store e un tocco sul pulsante Continua. Tra 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 link dinamico con un link diretto allo schema e all'host specificati, la tua app avvia l'attività con questo filtro per intent per gestire il link.
Il passaggio successivo consiste nell'assicurarsi che l'impronta SHA-256 del certificato di firma sia registrata nella console Firebase per l'app. Puoi trovare ulteriori dettagli su come recuperare l'impronta SHA-256 nella pagina Autenticazione del client.
Piattaforme Apple
Creare un account sviluppatore Apple se non ne hai già uno.
Nella pagina Impostazioni progetto della Console Firebase, assicurati che l'app per iOS sia configurata correttamente con l'ID App Store e l'ID team.
Sul sito Apple Developer, crea un profilo di provisioning per la tua app con la funzionalità Dominio associato abilitata.
In Xcode, procedi nel seguente modo:
Apri l'app sotto l'intestazione TARGET.
Nella sezione funzionalità, assicurati che il team sia registrato e il tuo profilo di provisioning sia impostato.
Nella sezione Funzionalità, attiva Domini associati e aggiungi quanto segue all'elenco dei domini associati (sostituisci l'esempio con il tuo dominio):
applinks:example.page.link
Nella pagina Informazioni, aggiungi un tipo di URL al progetto. Impostare gli schemi URL all'ID pacchetto dell'app. L'identificatore può essere
Bundle ID
o qualunque altro valore.Se hai configurato un dominio personalizzato per il tuo progetto Firebase, aggiungi il prefisso dell'URL del link dinamico al file
Info.plist
del progetto iOS utilizzando la chiaveFirebaseDynamicLinksCustomDomains
.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://custom.domain.io/path1</string> <string>https://custom.domain.io/path2</string> </array> ...other settings </dict> </plist>
(Facoltativo) Disattiva l'utilizzo della clipboard di iOS da parte dell'SDK di Dynamic Links.
Per impostazione predefinita, l'SDK Dynamic Links utilizza la bacheca per migliorare l'affidabilità dei link diretti post-installazione. Con la bacheca di blocco, Dynamic I link assicurano che quando un utente apre un link dinamico, ma deve farlo installare prima l'app, l'utente può andare immediatamente alla versione contenuti collegati alla prima apertura dell'app dopo il giorno dell'installazione.
Lo svantaggio è che l'utilizzo della cartella di lavoro attiva su iOS 14 e versioni successive. Pertanto, la prima volta che gli utenti aprono la tua app, se il portacolla contiene un URL di link dinamico, vedranno una notifica che indica che la tua app ha eseguito l'accesso al portacolla, il che può creare confusione.
Per disattivare questo comportamento, modifica il file
Info.plist
del progetto Xcode e imposta la chiaveFirebaseDeepLinkPasteboardRetrievalEnabled
suNO
.
Gestire i link diretti
Per gestire un Dynamic Link nella tua applicazione, sono necessari due scenari di implementazione.
Stato Terminato
Configura i seguenti metodi:
FirebaseDynamicLinks.getInitialLink
- restituisce unFuture<PendingDynamicLinkData?>
FirebaseDynamicLinks.onLink
: gestore di eventi che restituisce unStream
contenente unPendingDynamicLinkData?
Android riceverà sempre il link tramite FirebaseDynamicLinks.getInitialLink
da uno stato di interruzione, ma su iOS non è garantito. Pertanto, vale la pena configurarli entrambi nell'ordine seguente per assicurarti che la tua applicazione riceva il link:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
// Check if you received the link via `getInitialLink` first
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
FirebaseDynamicLinks.instance.onLink.listen(
(pendingDynamicLinkData) {
// Set up the `onLink` event listener next as it may be received here
if (pendingDynamicLinkData != null) {
final Uri deepLink = pendingDynamicLinkData.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
},
);
runApp(MyApp(initialLink));
}
All'interno della logica dell'applicazione, puoi quindi verificare se un link è stato gestito ed eseguire un'azione, ad esempio:
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
Stato in primo piano/sfondo
Mentre l'applicazione è aperta o in background, usa l'FirebaseDynamicLinks.onLink
getter:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
In alternativa, se vuoi sapere se è stato utilizzato un link dinamico esatto per aprire l'applicazione, trasmettilo a
il metodo getDynamicLink
:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Test di un collegamento dinamico sulla piattaforma iOS
Per testare un link dinamico su iOS, è necessario utilizzare un dispositivo effettivo. Dovrai anche eseguire l'app in modalità di rilascio (ad esempio, flutter run --release
).
se stai testando un link dinamico da uno stato dell'app terminata (ovvero mediante scorrimento dell'app).