Per ricevere i Firebase Dynamic Links che hai creato,
devi includere l'SDK di Dynamic Links nella tua app e chiamare il metodo
FirebaseDynamicLinks.getDynamicLink()
quando l'app viene caricata per
recuperare i dati trasmessi 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 i link alle 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 la tua app.
Android
Su Android, devi aggiungere un nuovo filtro per intent per intercettare i link diretti del tuo dominio, poiché il
Dynamic Link reindirizzerà al tuo dominio se la tua app è installata. Questo è necessario affinché la tua app
riceva i dati dei link dinamici dopo l'installazione/l'aggiornamento dal Play Store e dopo aver toccato 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 specificati, l'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 maggiori dettagli su come recuperare l'impronta SHA-256 nella pagina Autenticazione del client.
Piattaforme Apple
Crea un account sviluppatore Apple se non ne hai già uno.
Nella pagina Impostazioni progetto della console Firebase, assicurati che la tua 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 TARGET.
Nella pagina Firma e funzionalità, assicurati che il tuo team sia registrato e che il tuo profilo di provisioning sia impostato.
Nella pagina Firma e funzionalità, attiva Domini associati e aggiungi quanto segue all'elenco Domini associati (sostituisci l'esempio con il tuo dominio):
applinks:example.page.link
Nella pagina Informazioni, aggiungi un tipo di URL al tuo progetto. Imposta il campo Schemi URL sull'ID bundle della tua app. L'identificatore può essere
Bundle ID
o quello che preferisci.Se hai configurato un dominio personalizzato per il tuo progetto Firebase, aggiungi il prefisso URL di Dynamic Link al file
Info.plist
del tuo 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 funzionalità 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 link diretti post-installazione. Utilizzando gli appunti, i link dinamici possono garantire 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 la tua app, se la clipboard contiene un URL di link dinamico, vedranno una notifica che indica che la tua app ha eseguito l'accesso alla clipboard, il che può causare 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, è necessario implementare due scenari.
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 terminazione,
ma su iOS non è garantito. Pertanto, è consigliabile configurarli entrambi nel seguente ordine
per garantire 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));
}
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 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));
Test di un link dinamico sulla piattaforma iOS
Per testare un link dinamico su iOS, è necessario utilizzare un dispositivo reale. Se testi un link dinamico da uno stato dell'app terminato (ovvero l'app è stata chiusa scorrendo), devi anche eseguire l'app in modalità di rilascio (ovvero flutter run --release
.).