Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Ricevi link dinamici su iOS

Per ricevere Firebase Dynamic Links che hai creato , devi includere Dynamic Links SDK nella tua app e chiamare i handleUniversalLink: e dynamicLinkFromCustomSchemeURL: quando la tua app viene caricata per ottenere i dati passati in Dynamic Link.

Prerequisiti

Firebase Dynamic Links richiede iOS 8 o versioni successive. Puoi scegliere come target iOS 7 nella tua app, ma tutte le chiamate Firebase Dynamic Links SDK non saranno operative se l'app non è in esecuzione su iOS 8 o versioni successive.

  1. Aggiungi Firebase al tuo progetto iOS . Includi il seguente pod nel tuo Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  2. Esegui pod install e apri il file .xcworkspace creato.
  3. Nella console Firebase , apri la sezione Collegamenti dinamici . Accetta i termini di servizio se ti viene chiesto di farlo.
  4. Assicurati che l'ID App Store della tua 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 è configurato correttamente per utilizzare Dynamic Links nella tua app iOS aprendo il seguente URL:

    https://your_dynamic_links_domain/apple-app-site-association

    Se la tua app è connessa, il file di apple-app-site-association contiene un riferimento al prefisso dell'ID app e all'ID bundle dell'app. Per esempio:

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

    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 lo stesso dell'ID team.

  5. Facoltativo : disabilita l'utilizzo del tavolo di montaggio iOS da parte di Dynamic Links SDK.

    Per impostazione predefinita, l'SDK di Dynamic Links utilizza il tavolo di montaggio per migliorare l'affidabilità dei link diretti post-installazione. Utilizzando il tavolo di montaggio, Dynamic Links può assicurarsi che quando un utente apre un collegamento dinamico ma deve prima installare la tua app, l'utente può 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. Quindi, la prima volta che gli utenti aprono la tua app, se il tavolo di montaggio contiene un URL di collegamento dinamico, vedranno una notifica che la tua app ha avuto accesso al tavolo di montaggio, 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 del tuo 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 Dynamic Links con un dominio completamente personalizzato , nel file Info.plist del tuo progetto Xcode, crea una chiave denominata FirebaseDynamicLinksCustomDomains e Info.plist prefissi URL di Dynamic Links della tua app. Ad esempio:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Importa il modulo Firebase nella tua UIApplicationDelegate :

    Swift

    import Firebase

    Obiettivo-C

    @import Firebase;
  5. Configura un'istanza condivisa FirebaseApp , in genere nell'applicazione della tua app application:didFinishLaunchingWithOptions: metodo:

    Swift

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

    Obiettivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Successivamente, application:continueUserActivity:restorationHandler: metodo, gestire i collegamenti ricevuti come collegamenti universali quando l'app è già installata (su iOS 9 e versioni successive):

    Swift

    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

    - (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, nei application:openURL:sourceApplication:annotation: (iOS 8 e versioni precedenti) e application:openURL:options: (iOS 9 e versioni successive), application:openURL:options: collegamenti ricevuti tramite lo schema URL personalizzato della tua app. Questi metodi vengono chiamati quando la tua app riceve un collegamento su iOS 8 e versioni precedenti e quando la tua app viene aperta per la prima volta dopo l'installazione su qualsiasi versione di iOS.

    Se il collegamento dinamico non si trova sul primo lancio della tua app (su qualsiasi versione di iOS), questo metodo sarà chiamato con il FIRDynamicLink s' url insieme a nil , indicando che l'SDK non è riuscito a trovare una corrispondenza in attesa di Dynamic Link.

    Swift

    @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

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