Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Ricevi collegamenti dinamici su iOS

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Per ricevere i collegamenti dinamici Firebase che hai creato , devi includere l'SDK di collegamenti dinamici nella tua app e chiamare i handleUniversalLink: e dynamicLinkFromCustomSchemeURL: quando l'app viene caricata per ottenere i dati passati nel collegamento dinamico.

Prerequisiti

Prima di iniziare, assicurati di aggiungere Firebase al tuo progetto iOS .

Usa Swift Package Manager per installare e gestire le dipendenze di Firebase.

  1. In Xcode, con il progetto dell'app aperto, vai su File > Aggiungi pacchetti .
  2. Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Scegli la libreria Collegamenti dinamici.
  5. Per un'esperienza ottimale con Dynamic Links, 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.
  6. Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.

Ora, esegui alcuni passaggi di configurazione:

  1. Nella console Firebase , apri la sezione Collegamenti dinamici . Accetta i termini di servizio se ti viene richiesto.
  2. Assicurati che l'ID App Store dell'app 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 iOS.

    Puoi confermare 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 bundle della tua app. Per esempio:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}

    Se il campo dei details è vuoto, ricontrolla di aver specificato il prefisso dell'ID app. Tieni presente che il prefisso dell'ID app potrebbe non essere uguale al tuo ID team.

  3. Facoltativo : disabilita l'uso di Dynamic Links SDK della pasteboard iOS.

    Per impostazione predefinita, Dynamic Links SDK utilizza il pasteboard per migliorare l'affidabilità dei deep link post-installazione. Utilizzando la bacheca, Dynamic Links può assicurarsi che quando un utente apre un collegamento dinamico ma deve prima installare l'app, l'utente possa accedere immediatamente al contenuto collegato originale quando apre l'app per la prima volta dopo l'installazione.

    Lo svantaggio di questo è che l'uso del pasteboard attiva una notifica su iOS 14 e versioni successive. Pertanto, la prima volta che gli utenti aprono la tua app, se la pasteboard contiene un URL, vedranno una notifica che la tua app ha eseguito l'accesso alla pasteboard, il che può causare confusione.

    Per disabilitare questo comportamento, modifica il file Info.plist del tuo progetto Xcode e imposta la chiave FirebaseDeepLinkPasteboardRetrievalEnabled su NO .

  1. 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 di bundle, che è lo schema URL predefinito utilizzato da Dynamic Links.
  2. Nella scheda Funzionalità del progetto Xcode della tua app, abilita Domini associati e aggiungi quanto segue all'elenco Domini associati :
    applinks:your_dynamic_links_domain
  3. Se desideri ricevere collegamenti dinamici con un dominio completamente personalizzato , nel file Info.plist del tuo progetto Xcode, crea una chiave denominata FirebaseDynamicLinksCustomDomains e impostala sui prefissi URL dei collegamenti dinamici della tua app. Ad esempio:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Importa il modulo FirebaseCore nel tuo UIApplicationDelegate , così come qualsiasi altro modulo Firebase utilizzato dal delegato dell'app. Ad esempio, per utilizzare Cloud Firestore e l'autenticazione:

    Veloce

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Obiettivo-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  5. Configura un'istanza condivisa FirebaseApp nel metodo dell'applicazione del delegato application(_:didFinishLaunchingWithOptions:) :

    Veloce

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Obiettivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Successivamente, nel metodo application:continueUserActivity:restorationHandler: gestisci i collegamenti ricevuti come collegamenti universali quando l'app è già installata:

    Veloce

    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;
    }
  7. Infine, in application:openURL:options: i link 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 Dynamic Link non viene trovato al primo avvio dell'app, questo metodo verrà chiamato con l' url DynamicLink su nil , a indicare che l'SDK non è riuscito a trovare un Dynamic Link corrispondente in sospeso.

    Veloce

    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;
    }