Per ricevere i Firebase Dynamic Links che
hai creato, devi includere l'SDK di Dynamic Links nella tua app e chiamare i
handleUniversalLink: e dynamicLinkFromCustomSchemeURL:
metodi quando l'app viene caricata per ottenere i dati passati nel Dynamic Link.
Prerequisiti
Prima di iniziare, assicurati di aggiungere Firebase al tuo progetto iOS project.
Configura Firebase e l'SDK Dynamic Links
Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Add Packages (File > Aggiungi pacchetti).
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
- Scegli la libreria Dynamic Links.
- Aggiungi il flag
-ObjCalla sezione Other Linker Flags (Altri flag del linker) delle impostazioni di compilazione del target. - 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. Puoi selezionare la libreria senza raccolta IDFA o con raccolta IDFA. Consulta le nostre domande frequenti (FAQ) sull'organizzazione più recente dei moduli nell'Google Analytics per SDK Firebase.
- Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk.git
Ora, esegui alcuni passaggi di configurazione:
- Nella Firebase console, apri la Dynamic Links sezione. Accetta i Termini di servizio se ti viene richiesto di farlo.
-
Assicurati che l'ID App Store e il prefisso dell'ID app siano specificati nelle impostazioni dell'app. Per visualizzare e modificare le impostazioni dell'app, vai alla pagina Impostazioni del progetto Firebase e seleziona la tua app per iOS.
Puoi verificare che il tuo progetto Firebase sia configurato correttamente per utilizzare Dynamic Links nella tua app per iOS aprendo il seguente URL:
https://your_dynamic_links_domain/apple-app-site-association
Se la tua app è connessa, il file
apple-app-site-associationcontiene un riferimento al prefisso dell'ID app e all'ID pacchetto dell'app. Ad esempio:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}Se il campo
detailsè vuoto, controlla di aver specificato il prefisso dell'ID app. Tieni presente che il prefisso dell'ID app potrebbe non essere lo stesso dell'ID team. -
Facoltativo: disattiva l'utilizzo della clipboard di iOS da parte dell'Dynamic Links SDK.
Per impostazione predefinita, l'Dynamic Links SDK utilizza la clipboard per migliorare l' affidabilità dei link diretti post-installazione. Utilizzando la clipboard, Dynamic Links può assicurarsi che, quando un utente apre un Dynamic Link ma deve prima installare la tua app, possa accedere immediatamente ai contenuti collegati originali alla prima apertura dell'app dopo l'installazione.
Lo svantaggio è che l'utilizzo della clipboard 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, vedranno una notifica che indica che la tua app ha avuto accesso alla clipboard, il che può causare confusione.
Per disattivare questo comportamento, modifica il file
Info.plistdel progetto Xcode e imposta la chiaveFirebaseDeepLinkPasteboardRetrievalEnabledsuNO.
Apri Dynamic Links nella tua app
- Nella scheda Info del progetto Xcode dell'app, crea un nuovo tipo di URL da utilizzare per Dynamic Links. Imposta il campo Identifier (Identificatore) su un valore univoco e il campo URL scheme (Schema URL) su l'identificatore pacchetto, che è lo schema URL predefinito utilizzato da Dynamic Links.
- Nella scheda Capabilities (Funzionalità) del progetto Xcode dell'app,
attiva Associated Domains (Domini associati) e aggiungi quanto segue all'elenco Associated
Domains (Domini associati):
applinks:your_dynamic_links_domain
- Se vuoi ricevere Dynamic Links con un
dominio completamente personalizzato, nel
file
Info.plistdel progetto Xcode crea una chiave denominataFirebaseDynamicLinksCustomDomainse impostala sui prefissi URL dei Dynamic Links della tua app. Ad esempio:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importa il modulo
FirebaseCoreinUIApplicationDelegate, nonché tutti gli altri moduli Firebase utilizzati dal delegato dell'app. Ad esempio, per utilizzare Cloud Firestore e Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configura un'istanza condivisa nel metodo
application(_:didFinishLaunchingWithOptions:)del delegato dell'app:FirebaseAppSwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se utilizzi SwiftUI, devi creare un delegato dell'applicazione e collegarlo
alla struttura
ApptramiteUIApplicationDelegateAdaptoroNSApplicationDelegateAdaptor. Devi anche disattivare lo swizzling del delegato dell'app. Per ulteriori informazioni, consulta le istruzioni di SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Poi, nel metodo
application:continueUserActivity:restorationHandler:, gestisci i link ricevuti come link universali quando l'app è già installata:Swift
Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, tvOS o watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Objective-C
Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, tvOS o watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id
> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; } - Infine, in
application:openURL:options:gestisci i link ricevuti tramite lo schema URL personalizzato dell'app. Questo metodo viene chiamato quando l'app viene aperta per la prima volta dopo l'installazione.Se il Dynamic Link non viene trovato al primo avvio dell'app, questo metodo verrà chiamato con il
DynamicLink'surlimpostato sunil, a indicare che l'SDK non è riuscito a trovare un Dynamic Link in attesa corrispondente.Swift
Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, tvOS o watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
Objective-C
Nota: questo prodotto non è disponibile sui target macOS, Mac Catalyst, tvOS o watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary
*)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }