Erhalten Sie dynamische Links auf iOS

Um die Firebase dynamischen Links zu erhalten , dass Ihr erstellt , müssen Sie die dynamischen Links SDK in Ihrer App enthalten und rufen handleUniversalLink: und dynamicLinkFromCustomSchemeURL: Methoden , wenn Ihre Anwendung lädt die Daten in dem Dynamic Link übergeben zu bekommen.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, Firebase zu Ihrem iOS - Projekt hinzuzufügen .

  1. In Firebase zu Ihrem iOS - Projekt .
  2. Fügen Sie die folgende pod in Ihrem Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  3. Run pod install Sie die erstellte und öffnen .xcworkspace Datei.
  4. In der Firebase Konsole öffnet Abschnitt des dynamischen Links. Akzeptieren Sie die Nutzungsbedingungen, wenn Sie dazu aufgefordert werden.
  5. Stellen Sie sicher, dass die App Store-ID Ihrer App und Ihr App-ID-Präfix in den Einstellungen Ihrer App angegeben sind. Anzeigen und Bearbeiten von Einstellungen der App, gehen Sie zu Ihrem Firebase Projekt Seite Einstellungen und wählen Sie Ihren iOS - App.

    Sie können überprüfen, ob Ihr Firebase-Projekt richtig konfiguriert ist, um dynamische Links in Ihrer iOS-App zu verwenden, indem Sie die folgende URL öffnen:

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

    Wenn Ihre App verbunden sind, die apple-app-site-association enthält Datei einen Verweis auf Ihren App App - ID - Präfix und Bundle - ID. Zum Beispiel:

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

    Wenn die details Feld leer ist , überprüfen Sie, dass Sie Ihre App - ID - Präfix angegeben. Beachten Sie, dass Ihr App-ID-Präfix möglicherweise nicht mit Ihrer Team-ID übereinstimmt.

  6. Optional: Deaktivieren Sie die dynamische Links SDK * Die Verwendung des iOS Pappe.

    Standardmäßig verwendet das Dynamic Links SDK das Pasteboard, um die Zuverlässigkeit von Deeplinks nach der Installation zu verbessern. Durch die Verwendung des Pasteboards kann Dynamic Links sicherstellen, dass, wenn ein Benutzer einen Dynamic Link öffnet, aber zuerst Ihre App installieren muss, der Benutzer beim ersten Öffnen der App nach der Installation sofort zum ursprünglichen verlinkten Inhalt wechseln kann.

    Der Nachteil dabei ist, dass die Verwendung des Pasteboards unter iOS 14 und höher eine Benachrichtigung auslöst. Wenn Benutzer Ihre App zum ersten Mal öffnen und das Pasteboard eine dynamische Link-URL enthält, wird ihnen eine Benachrichtigung angezeigt, dass Ihre App auf das Pasteboard zugegriffen hat, was zu Verwirrung führen kann.

    So deaktivieren Sie dieses Verhalten, bearbeiten Sie Ihre Xcode Projekt Info.plist - Datei und die Set FirebaseDeepLinkPasteboardRetrievalEnabled Schlüssel zu NO .

  1. In der Registerkarte Info von Ihrem App Xcode - Projekt, erstellen Sie einen neuen URL - Typen für dynamische Links verwendet werden. Stellen Sie den Identifier Feld auf einen eindeutigen Wert und das URL - Schema Feld Ihren Bundle - Bezeichner zu sein, die das Standard - URL - Schema durch dynamische Links verwendet wird.
  2. In der Registerkarte Funktionen Ihrer App Xcode - Projekt aktivieren Verwandte Domains und die folgenden in die Liste Verwandte Domains hinzufügen:
    applinks:your_dynamic_links_domain
  3. Wenn Sie dynamische Verknüpfungen mit erhalten möchten voll benutzerdefinierten Domain , in Ihrem Xcode Projekt Info.plist Datei, Erstellen Sie einen Schlüssel namens FirebaseDynamicLinksCustomDomains und setzen Sie ihn auf Ihrer App dynamische Links URL - Präfixe. Zum Beispiel:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Importieren Sie die Firebase Modul in Ihrem UIApplicationDelegate :

    Schnell

    import Firebase

    Ziel c

    @import Firebase;
  5. Konfigurieren ein FirebaseApp gemeinsame Instanz, in der Regel in Ihrem App - application:didFinishLaunchingWithOptions: Methode:

    Schnell

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

    Ziel c

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Als nächstes wird in der application:continueUserActivity:restorationHandler: Methode, Griff Links erhalten als Universal - Verbindungen , wenn die App bereits (auf iOS 9 und neuer) installiert ist:

    Schnell

    func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
      let handled = DynamicLinks.dynamicLinks()
        .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in
          // ...
        }
    
      return handled
    }
    

    Ziel 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. Schließlich wird in der application:openURL:sourceApplication:annotation: (iOS 8 und älter) und application:openURL:options: (iOS 9 und höher) Methoden, Griff Links erhalten durch Schema Ihrer App benutzerdefinierte URL. Diese Methoden werden aufgerufen, wenn Ihre App unter iOS 8 und älter einen Link erhält und wenn Ihre App nach der Installation auf einer beliebigen iOS-Version zum ersten Mal geöffnet wird.

    Wenn die Dynamic Link nicht auf Ihrer App zum ersten Mal starten (auf einer beliebigen Version von iOS) gefunden, wird diese Methode mit der heißen FIRDynamicLink ‚s url Satz zu nil , was darauf hinweist , dass das SDK eine passende ausstehenden Dynamic Link zu finden ist fehlgeschlagen.

    Schnell

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

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