Per ricevere Firebase Dynamic Links che
creato, devi includere l'SDK Dynamic Links nell'app e chiamare il metodo
handleUniversalLink:
e dynamicLinkFromCustomSchemeURL:
al caricamento dell'app per ottenere i dati passati nell'elemento Dynamic Link.
Prerequisiti
Prima di iniziare, assicurati di aggiungere Firebase al tuo progetto iOS.
Configura Firebase e l'SDK Dynamic Links
Usa Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Aggiungi pacchetti.
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple Firebase:
- Scegli la libreria Dynamic Links.
- Aggiungi il flag
-ObjC
alla sezione Altri flag linker delle impostazioni di build 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.
- 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 console Firebase, apri Dynamic Links. . Se ti viene richiesto, accetta i Termini di servizio.
-
Assicurati che l'ID App Store e il prefisso dell'ID app dell'app siano specificato nelle impostazioni dell'app. Per visualizzare e modificare le impostazioni dell'app, vai a alle risorse del tuo progetto Firebase Impostazioni e seleziona la tua app per iOS.
Puoi verificare che il tuo progetto Firebase sia configurato correttamente per l'utilizzo Dynamic Links nella tua app per iOS aprendo il seguente URL:
https://your_dynamic_links_domain/apple-app-site-association
Se la tua app è collegata, il file
apple-app-site-association
contiene 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, verifica di aver specificato il prefisso dell'ID app. Tieni presente che il prefisso dell'ID app potrebbe non corrispondere all'ID team. -
Facoltativo: disattiva l'utilizzo dell'SDK iOS da parte dell'SDK Dynamic Links blocco note.
Per impostazione predefinita, l'SDK Dynamic Links utilizza lo strumento per migliorare l'affidabilità dei link diretti post-installazione. Dynamic Links puoi assicurarti che quando un utente apre un Dynamic Link ma deve installare il tuo l'utente può accedere immediatamente ai contenuti originali collegati quando apertura dell'app per la prima volta dopo l'installazione.
Lo svantaggio è che l'utilizzo degli strumenti di montaggio attiva su iOS 14 e versioni successive. Pertanto, la prima volta che gli utenti aprono la tua app, se il porta appunti contiene un URL, vedranno una notifica che indica che la tua app ha eseguito l'accesso al porta appunti, il che può creare confusione.
Per disattivare questo comportamento, modifica il file
Info.plist
del progetto Xcode e imposta la chiaveFirebaseDeepLinkPasteboardRetrievalEnabled
suNO
.
Apri Dynamic Links nell'app
- Nella scheda Informazioni del progetto Xcode dell'app, crea una nuova Tipo di URL da utilizzare per Dynamic Links. Imposta il parametro Identificatore a un valore univoco e il campo Schema URL su l'identificatore pacchetto, ovvero lo schema URL predefinito utilizzato da Dynamic Links.
- Nella scheda Funzionalità del progetto Xcode dell'app:
attiva i domini associati e aggiungi quanto segue al campo Associato
Domini:
applinks:your_dynamic_links_domain
- Se vuoi ricevere Dynamic Links con un
dominio completamente personalizzato,
Info.plist
del progetto Xcode, crea una chiave chiamataFirebaseDynamicLinksCustomDomains
e impostarlo sul Dynamic Links prefissi URL. Ad esempio:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importa il modulo
FirebaseCore
nel tuoUIApplicationDelegate
e tutti gli altri Moduli Firebase utilizzati dal delegato della tua 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
FirebaseApp
nel delegato della tua applicazione Metodoapplication(_:didFinishLaunchingWithOptions:)
:SwiftUI
// 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 per l'applicazione e collegarlo
al tuo struct
App
tramiteUIApplicationDelegateAdaptor
oppureNSApplicationDelegateAdaptor
. Devi anche disattivare lo swizzling del delegato dell'app. Per Per ulteriori informazioni, consulta le istruzioni di SwiiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Nel metodo
application:continueUserActivity:restorationHandler:
, gestisci i link ricevuti come Link universali quando l'app è già installata:Swift
Nota:questo prodotto non è disponibile sulle destinazioni 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 sulle destinazioni 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<UIUserActivityRestoring>> *_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:
, gli handle dei link ricevuto tramite lo schema URL personalizzato dell'app. Questo metodo viene chiamato la tua app viene aperta per la prima volta dopo l'installazione.Se Dynamic Link non viene trovato al primo avvio dell'app, questo metodo verrà chiamato con
url
di Dynamic Link impostato sunil
, a indicare che l'SDK non è riuscito a trovare un Dynamic Link in attesa corrispondente.Swift
Nota:questo prodotto non è disponibile sulle destinazioni 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 sulle destinazioni macOS, Mac Catalyst, tvOS o watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)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; }