Google 致力于为黑人社区推动种族平等。查看具体举措

Ricevi link dinamici su iOS

Per ricevere il Firebase dinamico collegamenti che si è creato , è necessario includere il link dinamici SDK nella tua app e chiamare il handleUniversalLink: e dynamicLinkFromCustomSchemeURL: metodi quando i carichi applicazione per ottenere i dati passati nel collegamento dinamico.

Prerequisiti

Prima di iniziare, assicurarsi di aggiungere la Firebase al progetto iOS .

  1. Aggiungere Firebase al progetto iOS .
  2. Includere il seguente pod nel Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  3. Eseguire pod install e aprire il creato .xcworkspace file.
  4. Nella console Firebase , aprire la sezione dinamica Links. Accetta i termini di servizio se ti viene chiesto di farlo.
  5. 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 del vostro app, andare al di progetto Firebase pagina Impostazioni e selezionare il vostro 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 è collegata la vostra applicazione, la apple-app-site-association file contiene un riferimento al prefisso App ID della tua app e ID bundle. Per esempio:

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

    Se il details campo è vuoto, controllare due volte che si è specificato il prefisso App ID. Tieni presente che il prefisso dell'ID app potrebbe non essere lo stesso del tuo ID team.

  6. Opzionale: Disabilita l'uso della dinamica Link del SDK del tavolo di montaggio iOS.

    Per impostazione predefinita, Dynamic Links SDK utilizza il tavolo di montaggio per migliorare l'affidabilità dei deep link successivi all'installazione. Utilizzando il tavolo di montaggio, Dynamic Links può garantire che quando un utente apre un collegamento dinamico ma deve prima installare l'app, l'utente può accedere immediatamente al contenuto collegato originale quando apre l'app per la prima volta dopo l'installazione.

    Il rovescio della medaglia è 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 tavolo di montaggio contiene un URL di collegamento dinamico, vedranno una notifica che indica che la tua app ha avuto accesso al tavolo di montaggio, il che può causare confusione.

    Per disattivare questo comportamento, modificare il tuo progetto Xcode Info.plist file e impostare la FirebaseDeepLinkPasteboardRetrievalEnabled chiave per NO .

  1. Nella scheda Informazioni di progetto Xcode della vostra applicazione, creare un nuovo tipo di URL da utilizzare per Dynamic Link. Impostare il campo di identificazione a un valore unico e il campo schema URL per essere il vostro identificatore bundle, che è lo schema URL predefinito utilizzato da Dynamic Link.
  2. Nella scheda Funzionalità di progetto Xcode della tua app, abilitare dominii e aggiungere la seguente alla lista dominii:
    applinks:your_dynamic_links_domain
  3. Se si desidera ricevere dinamica legami con un dominio completo personalizzato , nel del progetto Xcode Info.plist di file, creare una chiave denominata FirebaseDynamicLinksCustomDomains e impostarlo su prefissi dinamico collegamenti URL del vostro app. Ad esempio:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Importare il modulo Firebase nella vostra UIApplicationDelegate :

    Swift

    import Firebase

    Obiettivo-C

    @import Firebase;
  5. Configurare un FirebaseApp istanza condivisa, di solito in 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, nella application:continueUserActivity:restorationHandler: metodo, link manico ricevuti come universale Link quando l'applicazione è già installata (su iOS 9 e 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, in application:openURL:sourceApplication:annotation: (iOS 8 e più vecchio) e application:openURL:options: (iOS 9 in su) i metodi, i collegamenti maniglia ricevuti attraverso schema URL personalizzato del tuo 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;
    }