Per ricevere i Firebase Dynamic Links che hai creato,
devi includere l'SDK di Firebase Dynamic Links nella tua app e chiamare il
FirebaseDynamicLinks.getDynamicLink() metodo quando l'app viene caricata per
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 già fatto.
Dalla directory principale del progetto Flutter, esegui il seguente comando per installare il plug-in Dynamic Links:
flutter pub add firebase_dynamic_linksSe 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 i link all'app, specifica anche la chiave SHA-256.
Integrazione della piattaforma
Completa i seguenti passaggi di integrazione della piattaforma per le piattaforme per cui stai creando l'app.
Android
Su Android, devi aggiungere un nuovo filtro per intent per intercettare i link diretti del tuo dominio, poiché il link dinamico reindirizzerà al tuo dominio se l'app è installata. Questa operazione è necessaria affinché l'app riceva i dati del link dinamico dopo l'installazione/l'aggiornamento dal Play Store e quando l'utente tocca il 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 link dinamico con un link diretto allo schema e all'host che hai specificato, l'app avvierà 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 maggiori dettagli su come recuperare l'impronta SHA-256 nella pagina Autenticare il client.
Piattaforme Apple
Crea 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à Domini associati abilitata.
In Xcode:
Apri l'app sotto l'intestazione TARGETS.
Nella pagina Firma e funzionalità, assicurati che il tuo team sia registrato e che il profilo di provisioning sia impostato.
Nella pagina Firma e funzionalità, abilita Domini associati e aggiungi quanto segue all'elenco Domini associati (sostituisci l'esempio con il tuo dominio):
applinks:example.page.linkNella pagina Informazioni, aggiungi un tipo di URL al progetto. Imposta il campo Schemi URL sull'ID pacchetto dell'app. (L'identificatore può essere
Bundle IDo qualsiasi altro valore tu voglia.)Se hai configurato un dominio personalizzato per il tuo progetto Firebase, aggiungi il prefisso dell'URL del link dinamico al file
Info.plistdel 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 degli appunti di iOS da parte dell'SDK di Dynamic Links.
Per impostazione predefinita, l'SDK Dynamic Links utilizza gli appunti per migliorare l'affidabilità dei deep link post-installazione. Utilizzando gli appunti, Dynamic Links può assicurarsi che, quando un utente apre un link dinamico ma deve prima installare l'app, possa accedere immediatamente ai contenuti collegati originali quando apre l'app per la prima volta dopo l'installazione.
Lo svantaggio è che l'utilizzo degli appunti attiva una notifica su iOS 14 e versioni successive. Pertanto, la prima volta che gli utenti aprono l'app, se gli appunti contengono un URL di link dinamico, vedranno una notifica che indica che l'app ha avuto accesso agli appunti, il che può causare confusione.
Per disattivare questo comportamento, modifica il file
Info.plistdel progetto Xcode e imposta la chiaveFirebaseDeepLinkPasteboardRetrievalEnabledsuNO.
Gestire i link diretti
Per gestire un link dinamico nella tua applicazione, devi implementare due scenari.
Stato terminato
Configura i seguenti metodi:
FirebaseDynamicLinks.getInitialLink- restituisce unFuture<PendingDynamicLinkData?>FirebaseDynamicLinks.onLink- gestore di eventi che restituisce unStreamcontenente unPendingDynamicLinkData?
Android riceverà sempre il link tramite FirebaseDynamicLinks.getInitialLink da uno stato terminato, ma su iOS non è garantito. Pertanto, è consigliabile configurarli entrambi nel seguente ordine per assicurarsi che l'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));
}
Nella logica dell'applicazione, puoi quindi verificare se è stato gestito un link 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 background / in primo piano
Mentre l'applicazione è aperta o in background, utilizza il getter FirebaseDynamicLinks.onLink:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
In alternativa, se vuoi identificare se è stato utilizzato un link dinamico esatto per aprire l'applicazione, passalo al metodo getDynamicLink:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Testare un link dinamico sulla piattaforma iOS
Per testare un link dinamico su iOS, è necessario utilizzare un dispositivo reale. Dovrai anche eseguire l'app in modalità di rilascio (ad es. flutter run --release), se stai testando un link dinamico da uno stato dell'app terminato (ovvero l'app è stata chiusa con uno swipe verso l'alto).