Suche…


Bemerkungen

  1. Wenn Sie universelle Links unterstützen, können Benutzer von iOS 9 auf einen Link zu Ihrer Website tippen und nahtlos zu Ihrer installierten App weiterleiten, ohne Safari zu durchlaufen. Wenn Ihre App nicht installiert ist, wird durch Antippen eines Links auf Ihre Website Ihre Website in Safari geöffnet.
  2. Im Allgemeinen sollte jeder unterstützte Link, auf den in Safari oder in Instanzen von UIWebView / WKWebView geklickt wird, die App öffnen.
  3. Für iOS 9.2 und weniger funktioniert dies nur auf einem Gerät. iOS 9.3 unterstützt auch den Simulator.
  4. iOS speichert die Wahl des Benutzers, wenn er Universal Links öffnet. Wenn Sie auf den oberen rechten Breadcrumb tippen, um den Link in Safari zu öffnen, werden alle weiteren Klicks zu Safari und nicht zur App geführt. Sie können standardmäßig zum Öffnen der App zurückkehren, indem Sie im App-Banner auf der Website die Option Öffnen wählen.

Setup-Server

Sie müssen einen Server online ausführen. Um Ihre iOS-App sicher mit einem Server zu verknüpfen, müssen Sie eine Konfigurationsdatei ( apple-app-site-association . Dies ist eine JSON Datei, die die Domäne und unterstützte Routen beschreibt.

Die apple-app-site-association Datei muss über HTTPS ohne Weiterleitungen unter https: // {domain} / Apple-App-Site-Association zugänglich sein.

Die Datei sieht so aus:

{
"applinks": {
    "apps": [ ],
    "details": [
        {
            "appID": "{app_prefix}.{app_identifier}",
            "paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
        },
        {
            "appID": "TeamID.BundleID2",
            "paths": [ "*" ]
        }
    ]
}
}

HINWEIS - .json Sie .json an den Dateinamen der apple-app-site-association .

Die Schlüssel lauten wie folgt:
apps : Sollte ein leeres Array als Wert haben, und es muss vorhanden sein. So will Apple es.
details : Ist ein Array von Wörterbüchern, eines für jede von der Website unterstützte iOS-App. Jedes Wörterbuch enthält Informationen über die App, das Team und die Paket-IDs.

Es gibt drei Möglichkeiten, Pfade zu definieren:
Static : Der gesamte unterstützte Pfad ist fest codiert, um einen bestimmten Link zu identifizieren, z. B. / static / terms
Wildcards : Ein * kann verwendet werden, um dynamische Pfade abzugleichen, z. B. / books / * kann den Pfad zu jeder Autorenseite angeben. ? innerhalb bestimmter Pfadkomponenten, z. B. Bücher / 1? kann verwendet werden, um alle Bücher abzugleichen, deren ID mit 1 beginnt.
Exclusions : Wenn Sie einen Pfad mit NOT voranstellen, wird dieser Pfad nicht abgeglichen.

Die Reihenfolge, in der die Pfade im Array angegeben werden, ist wichtig. Frühere Indizes haben eine höhere Priorität. Sobald ein Pfad übereinstimmt, wird die Auswertung angehalten und andere Pfade werden ignoriert. Jeder Pfad unterscheidet zwischen Groß- und Kleinschreibung.


#Website-Code

Den Website-Code finden Sie unter gh-pages branch unter https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages

Mehrere Domains unterstützen

Jede in der App unterstützte Domäne muss eine eigene Apple-App-Site-Zuordnungsdatei bereitstellen. Wenn der von jeder Domäne bereitgestellte Inhalt unterschiedlich ist, ändert sich auch der Inhalt der Datei, um die jeweiligen Pfade zu unterstützen. Ansonsten kann dieselbe Datei verwendet werden, sie muss jedoch in jeder unterstützten Domäne verfügbar sein.

App-Site-Association-Datei signieren

Hinweis : Sie können diesen Teil überspringen, wenn Ihr Server HTTPS , um Inhalte bereitzustellen und zum Handbuch für die Anwendungskonfiguration zu springen.

Wenn Ihre App auf iOS 9 abzielt und Ihr Server HTTPS zum Bereitstellen von Inhalten verwendet, müssen Sie die Datei nicht signieren. Wenn nicht (z. B. bei der Unterstützung von Handoff unter iOS 8), muss es mit einem SSL Zertifikat von einer anerkannten Zertifizierungsstelle signiert werden.

Hinweis : Dies ist nicht das von Apple bereitgestellte Zertifikat, um Ihre App an den App Store zu übermitteln. Es sollte von einem Drittanbieter bereitgestellt werden. Es wird empfohlen, dasselbe Zertifikat zu verwenden, das Sie für Ihren HTTPS Server verwenden (obwohl dies nicht erforderlich ist).

Erstellen Sie zum Signieren der Datei zunächst eine einfache TXT-Version. Führen Sie anschließend im Terminal den folgenden Befehl aus:

cat <unsigned_file>.txt | openssl smime -sign -inkey example.com.key -signer example.com.pem -certfile intermediate.pem -noattr -nodetach -outform DER > apple-app-site-association

Dadurch wird die signierte Datei im aktuellen Verzeichnis ausgegeben. Bei example.com.key , example.com.pem und intermediate.pem es sich um die Dateien, die Ihnen von Ihrer Zertifizierungsstelle zur Verfügung gestellt würden.

Hinweis : Wenn die Datei nicht signiert ist, sollte sie einen Content-Type von application/json . Ansonsten sollte es application/pkcs7-mime .

Überprüfen Sie Ihren Server mit dem Apple App-Suchprüfungstool
Testen Sie Ihre Webseite auf iOS 9-Such-APIs. Geben Sie eine URL ein. Applebot durchsucht Ihre Webseite und zeigt, wie Sie die besten Ergebnisse erzielen können. Https://search.developer.apple.com/appsearch-validation-tool/

Das Setup auf der App-Seite erfordert zwei Dinge:

  1. Konfigurieren Sie die Berechtigung der App und aktivieren Sie die universellen Links, indem Sie die Funktion für verknüpfte Domänen im Projekt aktivieren.
  2. Eingehende Links in Ihrer AppDelegate .

1. Konfigurieren Sie die Berechtigung der App und aktivieren Sie universelle Links.

Der erste Schritt beim Konfigurieren der Berechtigungen Ihrer App ist das Aktivieren der App-ID. Tun Sie dies im Apple Developer Member Center. Klicken Sie auf Zertifikate, Bezeichner und Profile und dann auf Bezeichner. Wählen Sie Ihre App-ID aus (erstellen Sie sie ggf. zuerst), klicken Sie auf Bearbeiten, und aktivieren Sie die Berechtigung Zugeordnete Domänen.

Rufen Sie als Nächstes das App-ID-Präfix und das Suffix auf, indem Sie auf die entsprechende App-ID klicken.

Das Präfix und das Suffix der App-ID sollten mit dem in der Datei zur Zuordnung von Apple-App-Sites übereinstimmen.

Xcode Sie als Nächstes in Xcode das Ziel Ihrer App aus, klicken Sie auf "Funktionen" und aktivieren Sie "Zugeordnete Domänen". Fügen Sie für jede Domain, die Ihre App unterstützt, einen Eintrag hinzu, dem App-Links vorangestellt sind :

Zum Beispiel Applinks: YourCustomDomainName.com

Was für die Beispiel-App so aussieht:

Hinweis : Stellen Sie sicher, dass Sie dasselbe Team ausgewählt und die gleiche Bundle-ID wie die im App Center registrierte App-ID eingegeben haben. Stellen Sie außerdem sicher, dass die Berechtigungsdatei in Xcode enthalten ist, indem Sie die Datei auswählen. Stellen Sie im Datei-Inspector sicher, dass Ihr Ziel ausgewählt ist.


2. Umgang mit eingehenden Links in Ihrer AppDelegate

Alle Weiterleitungen von Safari zur App für universelle Links werden über die unten stehende Methode in der AppDelegate-Klasse der Anwendung ausgeführt. Sie analysieren diese URL, um die richtige Aktion in der App zu ermitteln.

[UIApplicationDelegate application: continueUserActivity: restorationHandler:]

Ziel c

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    ///Checking whether the activity was from a web page redirect to the app.
    if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
        ///Getting the URL from the UserActivty Object.
        NSURL *url = userActivity.webpageURL;
        UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UINavigationController *navigationController = (UINavigationController *)_window.rootViewController;
        if ([url.pathComponents containsObject:@"home"]) {
            [navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"HomeScreenId"] animated:YES];
        }else if ([url.pathComponents containsObject:@"about"]){
            [navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"AboutScreenId"] animated:YES];
        }
    }
    return YES;
}  

Schnell:

func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
      if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
          let url = userActivity.webpageURL!
          //handle url
      }
      return true
  }

iOS-Anwendungscode

Der Code App kann Master - Zweig gefunden werden hier .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow