Per ricevere i Firebase Dynamic Links che hai creato , devi includere l'SDK Dynamic Links nella tua app e chiamare i metodi handleUniversalLink:
e dynamicLinkFromCustomSchemeURL:
quando la tua app viene caricata per ottenere i dati trasmessi nel Dynamic Link.
Prerequisiti
Prima di iniziare, assicurati di aggiungere Firebase al tuo progetto iOS .
Configura Firebase e l'SDK di 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 .
- Quando richiesto, aggiungi il repository SDK delle piattaforme Firebase Apple:
- Scegli la libreria dei collegamenti dinamici.
- Per un'esperienza ottimale con i link dinamici, ti consigliamo di abilitare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app. È possibile selezionare la libreria senza raccolta IDFA o con raccolta IDFA.
- Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk
Ora, esegui alcuni passaggi di configurazione:
- Nella console Firebase , apri la sezione Collegamenti dinamici . Accetta i termini di servizio se ti viene richiesto.
Assicurati che l'ID App Store e il prefisso dell'ID app siano specificati nelle impostazioni dell'app. Per visualizzare e modificare le impostazioni della tua app, vai alla pagina Impostazioni del tuo progetto Firebase e seleziona la tua app per iOS.
Puoi verificare che il tuo progetto Firebase sia configurato correttamente per utilizzare i collegamenti dinamici nella tua app iOS aprendo il seguente URL:
https://your_dynamic_links_domain/apple-app-site-association
Se la tua app è connessa, il file
apple-app-site-association
contiene un riferimento al prefisso ID app e all'ID pacchetto della tua app. Per 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 essere lo stesso dell'ID squadra.Facoltativo : disabilita l'uso del tavolo di montaggio iOS da parte di Dynamic Links SDK.
Per impostazione predefinita, Dynamic Links SDK utilizza il pasteboard per migliorare l'affidabilità dei deep link post-installazione. Utilizzando il tavolo di montaggio, Dynamic Links può garantire che quando un utente apre un collegamento dinamico ma deve prima installare la tua app, l'utente possa andare immediatamente al contenuto collegato originale quando apre l'app per la prima volta dopo l'installazione.
Lo svantaggio di questo è che l'uso del tavolo di montaggio attiva una notifica su iOS 14 e versioni successive. Pertanto, la prima volta che gli utenti aprono la tua app, se il pasteboard contiene un URL, vedranno una notifica che l'app ha eseguito l'accesso al pasteboard, il che può creare confusione.
Per disabilitare questo comportamento, modifica il file
Info.plist
del progetto Xcode e imposta la chiaveFirebaseDeepLinkPasteboardRetrievalEnabled
suNO
.
Apri i collegamenti dinamici nella tua app
- Nella scheda Informazioni del progetto Xcode della tua app, crea un nuovo tipo di URL da utilizzare per i collegamenti dinamici. Imposta il campo Identificatore su un valore univoco e il campo Schema URL come identificatore del pacchetto, ovvero lo schema URL predefinito utilizzato da Dynamic Links.
- Nella scheda Funzionalità del progetto Xcode della tua app, abilita i domini associati e aggiungi quanto segue all'elenco dei domini associati :
applinks:your_dynamic_links_domain
- Se desideri ricevere collegamenti dinamici con un dominio completamente personalizzato , nel file
Info.plist
del tuo progetto Xcode, crea una chiave denominataFirebaseDynamicLinksCustomDomains
e impostala sui prefissi URL dei collegamenti dinamici della tua app. Ad esempio:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importa il modulo
FirebaseCore
nel tuoUIApplicationDelegate
, così come qualsiasi altro modulo Firebase utilizzato dal delegato dell'app. Ad esempio, per utilizzare Cloud Firestore e l'autenticazione:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Rapido
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Obiettivo-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configura un'istanza condivisa
FirebaseApp
nel metodoapplication(_:didFinishLaunchingWithOptions:)
del delegato dell'app:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Rapido
// Use Firebase library to configure APIs FirebaseApp.configure()
Obiettivo-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se utilizzi SwiftUI, devi creare un delegato dell'applicazione e allegarlo alla struttura
App
tramiteUIApplicationDelegateAdaptor
oNSApplicationDelegateAdaptor
. È inoltre necessario disabilitare lo scorrimento del delegato dell'app. Per ulteriori informazioni, consulta le istruzioni SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Successivamente, nel
application:continueUserActivity:restorationHandler:
:, gestisci i collegamenti ricevuti come collegamenti universali quando l'app è già installata:Rapido
Nota: questo prodotto non è disponibile su 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 }
Obiettivo-C
Nota: questo prodotto non è disponibile su 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<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:
gestisci i collegamenti ricevuti tramite lo schema URL personalizzato della tua app. Questo metodo viene chiamato quando l'app viene aperta per la prima volta dopo l'installazione.Se il collegamento dinamico non viene trovato al primo avvio dell'app, questo metodo verrà chiamato con l'
url
diDynamicLink
impostato sunil
, a indicare che l'SDK non è riuscito a trovare un collegamento dinamico in attesa corrispondente.Rapido
Nota: questo prodotto non è disponibile su 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 }
Obiettivo-C
Nota: questo prodotto non è disponibile su target 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; }