
EinfĂĽhrung
WWDC15 - Apple kündigt den Übergang zu Universal Links an. Ihre Bedeutung ist unzulässig. Senden Sie den Benutzer an die Anwendung, wenn er die Seite der Site aufruft, die von der Anwendung unterstützt wird. Dies wird am häufigsten in Briefen verwendet, die nach der Registrierung zur Bestätigung der E-Mail gesendet werden. Mit Universal Links müssen Benutzer nicht mehr selbstständig zur Anwendung zurückkehren. Dies ist sowohl für die Benutzererfahrung als auch für die Statistik von Vorteil.

Viele denken momentan vielleicht, dass dieser Artikel nicht sehr gut geschrieben ist, aber Sie, lieber Leser, haben möglicherweise nicht gesehen, was auf Stackoverflow zum Thema Universal Links passiert.
Implementierung
Jetzt werden wir vier Punkte analysieren, mit denen Sie Universal Links ohne die zusätzlichen Schmerzen und blendenden Überraschungen implementieren können, denen ich mich stellen musste. Am Ende werden wir leicht auf andere Literatur und Links eingehen, die Ihnen ein tieferes Verständnis von Universal Links vermitteln können.
Fahren wir mit dem ersten Punkt fort.
Zugehörige Domänen in App-IDs

Wenn Sie keine App-ID fĂĽr Ihre Anwendung registriert haben, tun Sie dies jetzt auf der
Apple Developer- Website. Stellen Sie bei der Registrierung sicher, dass Sie die zugeordneten Domänen verbinden. Wenn die App-ID bereits registriert ist, fahren Sie mit dem nächsten Schritt fort und aktivieren Sie Associated Domains direkt über Xcode.
Zugehörige Domänen in Xcode

Um selbst Anfängern klar zu sein, werden wir dies nicht direkt über die .entitlements-Datei tun und den klaren Weg gehen: Xcode → Projekt → Funktionen → Zugehörige Domänen.
Hier mĂĽssen wir auf "+" klicken und die Domains hinzufĂĽgen, die uns interessieren. Domains werden notwendigerweise ĂĽber eine Applink-Signatur hinzugefĂĽgt, zum Beispiel ...
applink:habr.com
In diesem Fall geben wir vor, dass wir dem Öffnen der Habr-Anwendung beim Wechseln zu einem der Hubs beibringen möchten, damit ich habr.com sicher davon überzeugen kann. Tatsächlich können wir die Arbeit von Universal Links auf Habré nicht testen. Wenn Sie sich sofort für einen Wechsel von der Theorie zur Praxis entschieden haben, empfehle ich Ihnen, jetzt eine Domain auf Github Pages zu erstellen und diese über applink anzugeben.
AppDelegate.swift
Hier reicht es für uns, diesen Code zu kopieren und einzufügen, aber dann kommt die Erklärung für die Neugierigen.
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: [Any?] -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else { return false } print(url)
Wenn Sie die Anwendung über Universal Link starten, erhalten Sie ein NSUserActivity-Objekt mit einem activityType-Wert. Die Eigenschaft webpageURL enthält die URL, auf die der Benutzer geklickt hat. Sie kann mithilfe von NSURLComponents in Teile zerlegt werden.
NSURLComponents ist ein ziemlich einfaches Thema, das von kleinen Projekten auf dem Spielplatz oft aufgedeckt wurde. Wenn Sie nicht verstehen, worum es geht, dann ist
hier ein guter Screenshot .
Apple-App-Site-Zuordnungsdatei
Es ist eine Datei ohne Erweiterung, die jedoch Daten im JSON-Format speichert. Es sieht ungefähr so ​​aus.
{ "applinks": { "apps": [], "details": [{ "appID": "teamId.com.bundleId.of.your.app", "paths": ["/path-for-redirectionl/*"] }] } }
Ich fordere Sie auĂźerdem dringend auf, das Problem im Speicher zu beheben, damit diese Datei
im Stammverzeichnis der Domäne gespeichert wird .
Im Code interessieren uns eigentlich nur zwei Felder. Die AppID in der Apple-App-Site-Zuordnung ist eine Kombination aus Ihrer Team-ID und Ihrer Bundle-ID. Im obigen Code habe ich die Daten bereits so ersetzt, dass es für Sie bequemer wäre, sie zu kopieren und einige Zeilen zu ändern.
Wie suche ich nach Team Identifier? Gehen Sie dazu zu developer.apple.com → Konto → Anmelden → Mitgliedschaft. Das dritte Feld ist Ihre Team-ID. Für mich ist es 74D322Z5HV.
Wie suche ich nach einer Bundle-ID? Xcode → Projekt → Allgemein. Ihre Bundle-ID wird im Abschnitt Identität, zweites Feld, geschrieben. Für mich ist dies com.habrahabr.ios.application.
Lassen Sie uns nun diese AppID fĂĽr die Apple-App-Site-Zuordnung erstellen.
"appID": "74D322Z5HV.com.habrahabr.ios.application"
Fertig! Du bist unglaublich! Lassen Sie uns nun über Pfade sprechen. In diesem Feld wird direkt auf der Stirn angegeben, welche Seiten der Site die Anwendung unterstützt und von welchen Seiten Sie an die Anwendung gesendet werden sollen. Sie können beliebig viele Seiten hinzufügen. Ein wenig Hilfe, wie dies funktioniert und um es Ihnen noch klarer zu machen, möchte ich Sie daran erinnern, dass wir einen Antrag für habr.com stellen
"paths": [ "/path-for-redirection/*" // URL – habr.com/path-for-redirection/ - ( *), URL habr.com/path-for-redirection/ok/funny-video-with-dogs/ . "/path-for-redirection/" // URL – habr.com/path-for-redirection/, , , , habr.com/path-for-redirection/ok/. "*" // - . "NOT /path-for-redirection/*" // , - URL NOT – , , NOT. ]
Und hier sieht es wie eine Apple-App-Site-Zuordnung aus, wenn wir zum Beispiel zwei Anwendungen haben: eine fĂĽr den Swift-Hub und die andere fĂĽr den iOS-Entwicklungs-Hub.
{ "applinks": { "apps": [], "details": [{ "appID": "74D322Z5HV.com.habrahabr.ios.application.iosdev", "paths": ["/hub/ios_dev/*"] }, { "appID": "74D322Z5HV.com.habrahabr.ios.application.swift", "paths": ["/hub/swift/*"] }] } }
Jetzt können Sie die Apple-App-Site-Zuordnungsdatei ohne die Erweiterung (Format) speichern und auf den Server hochladen. Senden Sie dann die erforderliche URL an Ihre E-Mail, stellen Sie in Xcode ein Projekt mit zugeordneten Domänen zusammen und codieren Sie in AppDelegate.swift. Sie sollten die Arbeit überprüfen, indem Sie in der Standard-Mail-Anwendung zur gewünschten URL wechseln.
Bemerkenswerte Fakten und Tipps
- Universal Links funktioniert nicht über den Browser. Wenn Sie in Safari zur erforderlichen URL wechseln, wird auf einem Schild angezeigt, dass Sie zur Anwendung wechseln können.
- Universal Links funktioniert nicht in Weiterleitungsketten. Wenn Sie zur gewünschten URL gelangen, wird auf der Website oben einfach ein Schild angezeigt, das Sie darüber informiert, dass Sie zur Anwendung wechseln können.
- Universal Links können mit GitHub Pages ohne eigenen dedizierten oder virtuellen Server getestet werden.
- Die URL fĂĽr den Ăśbergang muss unbedingt mit "https: //" beginnen.
- Mit dem App Search API Validation Tool können Sie überprüfen, ob mit der Apple-App-Site-Zuordnungsdatei alles in Ordnung ist.
- Um einen Ăśbergang von der gewĂĽnschten URL zur Anwendung zu bewirken, ist kein Inhalt unter dieser URL erforderlich. Das heiĂźt, der Ăśbergang wird auch dann ausgefĂĽhrt, wenn der Browser unter dieser URL 404 angibt.
- Durch langes Drücken von Universal Link in der E-Mail-Anwendung werden Sie aufgefordert, zwischen dem Öffnen der Anwendung und dem Öffnen des Browsers zu wählen.
Referenzen und Referenzen
Angesichts der Tatsache, dass eines der Ziele dieser Veröffentlichung darin besteht, ein maximales Verständnis von Universal Links zu vermitteln, möchte ich es mit Verweisen auf die Literatur beenden, die zum Schreiben des Artikels verwendet wurde und / oder nur ein tieferes Verständnis von Universal Links vermittelt.
Ich hoffe, diese Veröffentlichung war die beste, die Sie zu diesem Thema auf Russisch gefunden haben. Darüber hinaus werde ich Sie hier gerne weiterleiten (in den Kommentaren). Wenn ich einige Punkte verpasst habe oder mich in etwas geirrt habe, bitte ich Sie auch, mich darüber zu informieren.
Vielen Dank!