AnleitungenAppleDeep LinkingiOS 10iOS 11iOS 9Mobiles MarketingTechnikUniversalverbindungen

So werden unter Apples iOS Universelle Links zu Deep Links konfiguriert

By Oktober 30, 2017 No Comments

Aktualisierung: Der Beitrag wurde ursprünglich am 24. Juli 2015 veröffentlicht, aber seitdem mit den neuesten Informationen zu iOS 9.2 ergänzt. Seitdem Apple keine URI-Schemata für Deep Linking, mehr unterstützt, müssen Entwickler universelle Links implementieren, um unter iOS korrekt tiefer zu verlinken. Falls Sie bereits URI-Schemata nutzen, dann informieren Sie sich in unserem Blog über die Umstellung zu universellen Links

Wir bei Branch trinken, essen und atmen mobiles Deep Linking. Wir haben einen einzelnen Link erstellt, den Sie überall nutzen können: auf jeder Plattform, jedem Gerät und in jedem App Store, um die Nutzer zu Ihrer App zu führen. Es ist ein einzelner Link, komplett konfiguriert, um aus jedem Kanal (Facebook, Twitter, Gmail usw.) zu Ihrer App zu verlinken und um in jedem Suchportal (Google App Index, Bing, Apple Spotlight) aufgeführt zu werden.

Es funktioniert. Wir haben bereits Blogeinträge verfasst zu den Themen So wird die Google-App-Indexierung konfiguriert und Deep Linking auf Facebook, informieren Sie sich dort.

Slide1

Als Apple die universellen Links auf der letzten WWDC ankündigte, waren wir begeistert davon, diese in die Branch-Verlinkungsplattform aufzunehmen. Wir wussten nur wenig darüber, wie kompliziert dies werden würde. Nachdem wir viel zu viel Zeit damit verbracht und erkannt hatten, wie mager die Dokumentation dazu ist, haben wir beschlossen, eine Anleitung zur Verfügung zu stellen, um allen anderen diese Mühsal zu ersparen.

Wie funktionieren universelle Links unter iOS 9?

Vor den universellen Links bestand der primäre Mechanismus, eine installierte App zu öffnen, im Versuch, zum URI-Schema der App in Safari weiterzuleiten (eingetragen in der PLIST der App). Dies übertrug die Weiterleitungslogik an Safari, aber es gab keine Möglichkeit, festzustellen, ob die App installiert war oder nicht. Das bedeutete, dass die Entwickler die gesamte Zeit versuchen würden, das URI-Schema aufzurufen mit der einmaligen Chance, dass die App bereits installiert wurde, um dann elegant auf den App Store zurückzugreifen, falls kein Timer verwendet wird.

Die universellen Links wurden in iOS 9 eingeführt, um dieses Problem zu lösen. Anstatt beim Anklicken eines Links zuerst Safari zu öffnen, prüft das iOS, ob ein universeller Link für die Domain registriert wurde, zu der der Link gehört, und testet dann, ob die zugehörige App installiert ist. Ist die App aktuell installiert, wird sie geöffnet. Falls nicht, wird Safari geöffnet und der http(s):// -Link geladen.

Funktionell erlaubt dies, einen einzelnen Link zu verwenden, der entweder Ihre App oder Ihre mobile Seite öffnet..

Anleitung für die Integration universeller Links

Hier sind die wichtigsten Schritte, damit universelle Links für Ihre App funktionieren:

1. Konfiguration Ihrer App für die Registrierung genehmigter Domains

  1. Registrieren Sie Ihre App auf developer.apple.com.
  2. Aktivieren Sie Zugehörige Domains in Ihrer App-ID
  3. Aktivieren Sie Zugehörige Domains n Ihrem Xcode-Projekt
  4. Fügen Sie die richtige Domainberechtigung hinzu
  5. Stellen Sie sicher, dass die Berechtigungsdatei im Build enthalten ist

Wenn Sie Branch nutzen, können Sie jetzt aufhören. Sonst fahren Sie mit Abschnitt 2 fort.

2. Konfiguration Ihrer Website für das Hosting der apple-app-site-association file(AASA)-Datei

  1. Kaufen Sie einen Domainnamen oder wählen Sie aus Ihrem Bestand
  2. Erwerben Sie ein SSL-Zertifikat für die Domain
  3. Erstellen Sie eine strukturierte AASA-JSON-Datei
  4. Signieren Sie die JSON-Datei mit dem SSL-Zertifikat
  5. Konfigurieren Sie den Dateiserver

Wenn Sie den Service von Branch verwenden, ersparen wir Ihnen die gesamte Komplexität der Erstellung von SSL-Zertifizierungen und des Signierens bzw. Hostens Ihrer JSON-Datei auf dem Server. Sie müssen für die Nutzung lediglich den Code Ihrer App verändern. Dies erläutern wir weiter unten.

Hinweis: Wir haben auch ein Tool erstellt, das die richtige Konfiguration Ihrer AASA-Datei prüft.

Abschnitt 1: Konfiguration Ihrer App-Berechtigungen

Hinweis: Um Ihr Xcode-Projekt für universelle Links zu registrieren, müssen Sie eine App-ID im Apple-Entwicklerportal erzeugen und die richtigen Berechtigungen aktivieren. Dies ähnelt sehr der für In-App-Käufe benötigten Konfiguration.

Sie können keine Platzhalter-App-ID für universelle Links verwenden.

Зарегистрируйте приложение на сайте developers.apple.com

Zuerst gehen Sie auf developer.apple.com und melden sich an. Dann klicken Sie auf Zertifikate, IDs & Profile und anschließend auf IDs.

Apple Developer Portal for Universal LinksApple Dev Portal for Universal Links

Falls Sie noch nicht über eine registrierte App-ID verfügen, müssen Sie eine durch das Anklicken des Pluszeichens erstellen. Falls Sie eine besitzen, können Sie zum nächsten Abschnitt übergehen.

Sie müssen hier 2 Felder ausfüllen: Name und Bundle-ID. Als Name können Sie grundsätzlich eingeben, was Sie möchten. Als Bundle-ID geben Sie den Wert des Bundles ein.

Explicit App ID for Universal Links

 

Sie erfahren diesen Wert auf der Registerkarte Allgemein Ihres Xcode-Projekts für das richtige Erstellungsziel.

Setting up Universal Links in xcode

Aktivieren Sie Zugehörige Domains in Ihrer App-ID auf developers.apple.com.

Für Ihre vorhandenen oder in Arbeit befindlichen App-IDs blättern Sie zum letzten Abschnitt und prüfen die Dienste Zugehörige Domains.

Setting up App ID for Universal Links

 

Blättern Sie nach unten und klicken Sie auf Speichern.

Aktivierung der Zugehörigen Domains in Ihrem Xcode-Projekt

Jetzt sollten Sie die Berechtigung Zugehörige Domains in Ihrem Xcode-Projekt aktivieren. Zuerst stellen Sie sicher, dass Ihr Xcode-Projekt dasselbe Team ausgewählt hat, unter dem Sie gerade Ihre App-ID registriert haben. Dann gehen Sie zum Tab Ressourcen Ihrer Projektdatei.

Universal Links in xcode

Blättern Sie nach unten und aktivieren Sie Zugehörige Domains, sodass sich die Ziehharmonika entfaltet.

setting up associated domain for Universal Links

Falls Sie einen Fehler wie diesen sehen, prüfen Sie:

  1. dass Sie das richtige Team ausgewählt haben
  2. dass die Bundle-ID Ihres Xcode-Projekts mit der für die Registrierung der App-ID verwendeten übereinstimmt

Hinzufügen der Domainberechtigung

Fügen Sie im Abschnitt Domains den geeigneten Domain-Tag hinzu. Diesem muss der Präfix applinks: vorangestellt werden. Sie sehen, dass wir hier applinks:yourdomain.com hinzugefügt haben

App Links and your domain

Stellen Sie sicher, dass die Berechtigungsdatei im Build enthalten ist.

Kürzlich hatte Xcode 7 aus irgendeinem Grund meine Berechtigungsdatei nicht in das Build eingeschlossen. Stellen Sie im Projektbrowser sicher, dass Ihre neue Berechtigungsdatei für die Aufnahme zu den richtigen Zielen ausgewählt ist.

Configuring xcode for universal links

 

Wenn Sie Branch-Links nutzen, können Sie hier aufhören! Falls nicht, lesen Sie weiter oder nutzen den Button unten zum Start der Integration.

Möchten Sie sich Stunden des Kopfzerbrechens ersparen, dann können Sie jegliche Arbeit zum JSON-Hosting und SSL-Zertifizieren vermeidenund einfach Branch-Links nutzen, die dies für Sie hosten.
https://dev.branch.io/recipes/branch_universal_links
Nun, wenn Sie ein Kontrollfreak und eine Art Masochist sind, dann fahren Sie einfach fort.

Abschnitt 2: Konfiguration Ihrer AASA-Datei

Universelle Links verändern Ihre Webseiten-URL zu einem App-Link, somit muss ein Webserver laufen, um diese zu nutzen. Als Hilfe in diesem Vorgang verwenden Sie unseren Validator für universelle Links zur Prüfung, ob Ihre AASA-Datei richtig konfiguriert ist.

Eine Domain auswählen

Zuerst bestimmen Sie die Domain, die Sie für Ihre universellen Links verwenden möchten. Sie können eine neue registrieren oder eine vorhandene verwenden. Bei einer Neuregistrierung bevorzugen wir eine saubere, spamfreie Registrierungsstelle wie gandi.net.

SSL-Zertifizierung anfordern

Sie müssen SSL-Zertifikate für die Domain anfordern, die Sie für das Hosting der universellen Links verwenden wollen. Dafür müssen Sie den Service eines Drittanbieters nutzen, um Ihre Domain für SSL zu registrieren, und die benötigten Dateien erstellen. Wir haben nach einer Recherche Digicert ausgewählt, um branch.io und die zugehörigen Unterdomains zu verwalten.

Diese Schritte benötigen Sie, um Ihre SSL-Zertifizierung zu erstellen:

  1. Gehen Sie zu https://www.digicert.com/easy-csr/openssl.htm und füllen Sie das obere Formular aus, um einen openSSL-Befehl zu generieren. Lassen Sie dieses Fenster geöffnet.
  2. Melden Sie sich an Ihrem Remote-Server an.
  3. Führen Sie den openSSL-Befehl aus, um eine Zertifikatssignierungsanforderung (.csr) und eine Zertifikatsdatei (.cert) zu generieren.
  4. Bezahlen Sie Ihre SSL-Zertifizierung unter https://www.digicert.com/welcome/ssl-plus.htm.
  5. Warten Sie, bis Digicert bestätigt und die endgültigen Dateien sendet.
  6. Zum Abschluss verschieben Sie ihredomain.com.cert, ihredomain.com.key und digicertintermediate.cert in das selbe Verzeichnis auf Ihrem Remote-Server.

Erstellung Ihrer AASA-JSON

Diese JSON-Datei besitzt eine recht gut standardisierte Struktur, so dass Sie im Grunde diese Version kopieren und an Ihre Bedürfnisse anpassen können. Ich werde im folgenden erläutern, wo die korrekten Werte zu finden sind.

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "T5TQ36Q2SQ.com.branch.sdk.TestBed",
        "paths": ["*"]
      }
    ]
  }
}

Die einzigen Felder, die geändert werden müssen, beziehen sich auf: T5TQ36Q2SQ.com.branch.sdk.TestBed. Aktuell sind das zwei Werte, verbunden mit einem Punkt. Beide Werte können auf developers.apple.com im Bereich IDs -> App-ID gefunden werden. Klicken Sie einfach auf die entsprechende registrierte App-ID wie unten gezeigt.

Configuring Apple ID for Universal Links

In diesem Beispiel verbinden Sie den Präfix und die ID mit einem Punkt, sodass es folgendermaßen aussieht: T5TQ36Q2SQ.com.branch.sdk.TestBed.

Speichern Sie diese JSON-Datei als apple-app-site-association-unsigned.

Signieren der JSON-Datei mit Ihren SSL-Zertifikaten

Hinweis: wenn SieIhre Domain als HTTPS zertifiziert haben, können Sie diesen Schritt überspringen unddie JSON als einfachen Text senden. Apple’s updated requirements:

Wenn Ihre App funktioniert auf iOS 9 oder höher und verwenden Sie HTTPS für файла apple-app-site-association, können Sie eine Datei mit unformatiertem Text, das verwenden von application/json MIME-Typ und Sie brauchen nicht zu unterzeichnen. Wenn Handoff unterstützt und Shared Web Credentials in iOS 8, Sie benötigen, um die Datei zu signieren, wie beschrieben Shared Web Credentials Reference.

Alle Dateien von apple-app-site-association auf der Plattform Branch jetzt mit application/json.

Laden Sie die Datei apple-app-site-association-unsigned auf Ihren Server in das Verzeichnis, in dem auch die Zertifikats- und Schlüsseldateien aus den vorigen Schritten liegen. Wechseln Sie unter Nutzung der Eingabeaufforderung in dieses Verzeichnis und führen den folgenden Befehl aus:

cat apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > apple-app-site-association

Das erzeugt die AASA-Datei  apple-app-site-association.

Konfiguration Ihres Dateiservers

OK! Nun haben Sie Ihre signierte AASA-Datei. Nun müssen Sie noch Ihren Dateiserver so konfigurieren, dass er diese für Sie hostet. Dabei gibt es einige Fallstricke:

  1. Die Sendung benötigt den Header application/pkcs7-mime
  2. Die Sendung benötigt den Endpunkt youdomain.com/apple-app-site-association, youdomain.com/.well-known/apple-app-site-association ( только iOS 9.3+ ).
  3. Es muss ein HTTP-Code 200 zurückgegeben werden.

Wir haben dies für alle in Branch integrierten Apps eingerichtet, die unsere Node+Express-Linkserver nutzen. Falls es nützt, hier ist der verwendete Code:

var aasa = fs.readFileSync(__dirname + '/static/apple-app-site-association');
app.get('/apple-app-site-association', function(req, res, next) {
     res.set('Content-Type', 'application/json');
     res.status(200).send(aasa);
});

Anleitung zur Integration universeller Links mit Branch und iOS 9

Wir erinnern daran, dass Sie sich die ganze Arbeit des JSON-Hostings und der SSL-Zertifizierung ersparen können, wenn Sie einfach Branch-Links nutzen.
Fröhliches Verlinken!

Request Demo Create Links