Deep Linking für mobile Anwendungen

  • Tutorial
Auf der WWDC 2015 gaben die Apple-Ingenieure bekannt, dass sie den Ansatz für Deep Linking überarbeitet hatten, und im vergangenen Jahr kündigte Google den App Index an. Als ein neuer Blick auf Deep Links im Frühjahr 2015 in der Welt der mobilen Entwicklung sprachen sie über kontextbezogene Deep Links. Was für ein Tool ist das und wie man damit in Bezug auf iOS arbeitet - das werde ich in diesem Artikel erklären.

Was ist das?


Eine Möglichkeit, die Konversion zu steigern und gleichzeitig für ein IT-Produkt zu werben, besteht darin, die Hindernisse für Benutzer zu verringern, die das gewünschte Ziel erreichen. In der mobilen Entwicklung ist dieses Problem noch relevanter. Bei der Verwendung von E-Mail-, Push- oder SMS-Mailings mit Informationen zu Werbeaktionen ist lediglich eine Vereinfachung des Zugriffs auf die Anwendungsfunktionalität erforderlich. In einer solchen Situation ist es keine Lösung, die Anwendung einfach von einer externen Quelle aus zu starten, da es sich bei einer Werbeaktion um ein bestimmtes Sonderangebot in einem bestimmten Bereich handelt. Damit der Benutzer nach dem Start der Anwendung nicht herumlaufen, suchen und sich ärgern muss, benötigen wir ein zusätzliches Tool, das die Navigation vorbestimmt. Und es gibt so ein Werkzeug.
Deep Linking ist eine Technologie, mit der ein Benutzer zwischen Anwendungen zu vordefinierten Abschnitten navigieren kann.



Wie funktioniert es


Stellen Sie sich vor, eine Pizzeria hat sich für eine Werbekampagne entschieden, in deren Rahmen sie jedem anbietet, Margarita-Pizza mit einem Rabatt von 50% zu kaufen. Die Pizzeria hat eine Website und eine mobile Anwendung (letztere ist natürlich aus Marketinggründen für die Arbeit mit einem Kunden vorzuziehen, und Operationen mit einer Bankkarte in der Anwendung sind viel bequemer als in einem Browser). Das Unternehmen verschickt auf Kundenbasis SMS mit Informationen über das Sonderangebot und verweist auf den gewünschten Bereich der Website. Wenn auf dem Smartphone des Kunden eine Pizzeria-Anwendung installiert ist, sendet der Standortserver beim Klicken auf den Link den Kunden sofort an den gewünschten App-Bereich, um eine Bestellung aufzugeben (dies ist der Deep Linking-Mechanismus). Wenn auf dem Smartphone keine Anwendung vorhanden ist, wird der Kunde aufgefordert, diese im Geschäft zu installieren und dann erneut zu wechseln über den link in sms (oder weiterhin die web version benutzen).

Beim Konzept des World Wide Web wurde der Deep Linking-Mechanismus in HTTP und URL integriert, da zwischen allen Dokumenten im Netzwerk und nicht nur den Stammseiten gewechselt werden kann. In mobilen Betriebssystemen wird dieser Mechanismus auf verschiedene Arten implementiert.

Wie es in iOS geht


Das Funktionsprinzip von Deep Linking ist wie folgt: Der Benutzer initiiert den Übergang zur URL, die an dieser URL befindliche Ressource bestimmt das Betriebssystem und wechselt dementsprechend in einem vorgegebenen Abschnitt zur Anwendung.

URL - Ein Link, der den Speicherort einer Ressource angibt. Es wird hauptsächlich für die Netzwerkadressierung verwendet, kann jedoch verwendet werden, um einen Speicherort im Dateisystem anzugeben.

Diese Technologie verfügt über mehrere Implementierungsmethoden:
  • Klassischer Ansatz
  • Lösungen von Drittanbietern
  • Neue Trends aus den IT-Bereichen

Klassische Implementierung in iOS


Die allgemein akzeptierte Implementierung besteht aus den folgenden Schritten:

1. Übersetzung der Anforderung in das URL-Schema, ihre Ausführung mit der Möglichkeit, das Fehlen des Schemas zu verarbeiten.
2. Bearbeiten des Schemas und Navigieren innerhalb der Anwendung zu einem bestimmten Abschnitt / Bildschirm.

Das URL-Schema ist der Teil der URL bis: //, der für das Interaktionsschema mit der Ressource verantwortlich ist, zu der der Link selbst führt, in den meisten Fällen ist das Protokoll gemeint.

Es gibt beispielsweise eine Reihe von registrierten Systemen http, ftp, tel, mailtousw.

Erstellen, Ausführen und Verarbeiten des Ergebnisses der Ausführung eines URL-Schemas

Um eine HTTP-Anfrage korrekt in ein URL-Schema zu konvertieren, müssen Sie eine Entsprechungstabelle und / oder eine angegebene Übersetzungsregel auf dem Server speichern.

Es gibt verschiedene Möglichkeiten, das URL-Schema korrekt auszuführen und das Ergebnis zu verarbeiten. Es hängt alles von der Umgebung ab, in der das URL-Schema ausgeführt wird. Wenn dies in der iOS-Anwendung geschieht, gibt es Standardmethoden, um zu überprüfen, ob das URL-Schema im System registriert ist:

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@”myapp://”]];

Wenn das Schema in einer Webumgebung ausgeführt wird, empfiehlt es sich, ein JS-Skript zu verwenden, mit dem die Anwendung entweder gestartet oder an die gewünschte Ressource gesendet wird.

Ein Beispiel:

$(function(){
    window.location = 'myapp://';
    setTimeout(function(){
        window.location = 'fallback.html';
    }, 500);
});

Wenn nach 500 ms der Übergang nach dem Schema "myapp: //" (zuvor generiertes Schema) fehlschlägt, wird der Übergang nach "fallback.html" ausgeführt.

Dieses Skript muss in die für den Übergang verantwortliche Ressource eingebettet sein.
Auf GitHub gibt es mehrere mehr oder weniger erfolgreiche Implementierungen solcher Lösungen.

Verarbeitung des resultierenden URL-Schemas und Navigation innerhalb der Anwendung

Dieser Teil der Implementierung des Deep Linking-Mechanismus bezieht sich ausschließlich auf die Anwendung, die die Benutzeranforderung verarbeiten und an den gewünschten Abschnitt übertragen soll.

Dazu müssen Sie zunächst Ihr eigenes URL-Schema registrieren, das der Anwendung zugeordnet wird.
In den Einstellungen des Hauptziels des Projekts im Abschnitt Info müssen Sie den Typ Ihres Schemas im Element URL Types —URL (Abbildung 2) hinzufügen. Geben Sie



im Feld Identifier die Paket-ID der Anwendung und im Feld URL Schemes das Schema an, mit dem Ihre Anwendung verbunden wird. Als Nächstes müssen Sie den Navigationsmechanismus in der Anwendung implementieren. Dazu müssen Sie die mögliche Übertragung der URL an die Anwendung abwickeln. Sie können es auf viele Arten übertragen, wir werden die direkte Ausführung der Schaltung im System berücksichtigen.

Um den Start der Anwendung über die URL zu verarbeiten, benötigen Sie im AppDelegate der Anwendung in der Methode:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Holen Sie sich aus dem Wörterbuch lauchOptionsdas Objekt mit dem Schlüssel UIApplicationLaunchOptionsURLKey. Wenn das Objekt vorhanden ist, bedeutet dies, dass die Anwendung über das URL-Schema gestartet wird und dieses Schema verarbeitet werden kann. Wenn die Anwendung zum Zeitpunkt der Ausführung des Schemas gestartet wird, muss die URL in demselben AppDelegate in der Methode abgerufen werden:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

Hier müssen Sie den URL-Parameter für die weitere Navigation verwenden. Die Navigation in der Anwendung ist eine ganz persönliche Wahl, ich würde jedoch die Verwendung der Router-Vorlage empfehlen. Erstens verstößt dies nicht gegen das Prinzip der Einzelverantwortung, und zweitens können Sie diese Navigation künftig von jedem Ort aus kapseln und verwenden. Der Router muss die URL (als Schlüssel) aufnehmen und einen ViewController ausgeben oder diese Navigation implementieren.

Lösungen von Drittanbietern


Von den Drittanbieterlösungen können Sie Mobile Deeplinking (AppURL, AppLinks, UrbanAirShip usw.) in Betracht ziehen. Diese Frameworks sind Komplettlösungen für die Implementierung aller Komponenten der Deep Linking-Technologie. Sie enthalten separate Bibliotheken mit eigenen externen URL-Handlern und dem Navigationsmechanismus in der Anwendung. Dementsprechend erfordern solche Lösungen die Integration ihrer SDKs in das Projekt.

Unabhängig davon sollte eine Lösung in Betracht gezogen werden, die keine Integration erfordert: Der Deep Link Me- Dienst bietet die Möglichkeit, die Anwendung mit einem bestimmten Link auszuführen. Wenn die Anwendung nicht installiert ist, leiten Sie sie zum Store weiter. Alle Einstellungen erfolgen direkt auf der Site, aus den möglichen Optionen:

  • Hinzufügen von Compliance-Regeln für "HTTP-Anforderung - URL-Schema";
  • Wechseln zu einer alternativen Ressource, einschließlich des Anwendungsspeichers;
  • Unterstützt iOS / Android.

Der einzige Nachteil dieser Lösung ist, dass die gesamte Übertragung über deeplink.me erfolgt, was der Benutzer zweifellos sehen wird. Um dieses Tool verwenden zu können, müssen Sie die Unterstützung für URL-Schemas und Navigation in der Anwendung selbst implementieren.

Ein neuer Blick auf Deep Linking


Was Google uns in der Deep Binding-Technologie bietet.

In jüngerer Zeit hat Google eine neue Richtung in der App-Indexierung eingeschlagen. Natürlich zielt es größtenteils auf die Android-Entwicklung ab und ist so komfortabel wie möglich dafür implementiert, aber iOS wurde nicht vergessen, obwohl es eine eingeschränkte Beta-Version ist.

Also:
Neben dem funktionsfähigen Deep Linking gibt es auch eine Indizierung der Anwendung in der Google-Suchmaschine. Als Ergebnis einer weltweiten Suche werden Links zu Abschnitten der Anwendung angezeigt.

Für die Implementierung ist Folgendes erforderlich:

1. Registrieren Sie ein weiteres URL-Schema im Projekt im Format: where, “scheme” - Ihr oben registriertes Schema. 2. Verbinden Sie das GoogleAppIndexing-Framework (über CocoaPods)
gsd-{scheme}



3. Verarbeiten Sie den Übergang in den obigen Methoden Ihrer Anwendung wie folgt:
 NSURL *sanitizedURL = [GSDDeepLink handleDeepLink:url];

Auf diese Weise können Sie Ihre Anwendung mit Google App Indexing verknüpfen und ein Fenster erstellen, um zur Suche zurückzukehren.
4. Sie müssen Ihre Site einrichten, auf die der Übergang erfolgt. Fügen Sie dazu dem Header der Site Folgendes hinzu:


  ...
  
  ...

 … 

Sie können GoogleBot auch Zugriff auf Ihre Website gewähren, um sie vollständig zu indizieren.

Alle diese Methoden basieren auf der Arbeit mit URL-Schemata. Sie ist seit langem bekannt und geübt. Die Probleme, die bei ihnen auftreten können, sind ebenfalls bekannt. Beispielsweise ist das Verhalten völlig undefiniert, wenn zwei verschiedene Anwendungen dasselbe Schema registrieren. Sie müssen auch ein alternatives Verhalten behandeln, wenn Ihre Anwendung nicht installiert ist. In solchen Situationen liegt jede Verantwortung bei den Entwicklern, und Implementierungsfehler werden leider zur gängigen Praxis.

Wie vermeide ich solche Situationen?

Auch hier enttäuscht uns Apple nicht - ab iOS 9 wurde die HTTP- und HTTPS-Unterstützung mit einem direkten Übergang zur Anwendung hinzugefügt.
Im Juni 2015 berichteten uns die „Cupertino-Jungs“ auf der WWDC über einen neuen Ansatz zur Implementierung eines so praktischen Mechanismus zur Werbung für eine mobile Anwendung.

Sie nannten es Seamless Linking, was als "nahtlose Links" übersetzt werden kann. Mit diesem Mechanismus können Sie dieselben Web-URLs verwenden wie beim Navigieren durch Abschnitte Ihrer Website. Außerdem erfolgt die Verbindung zwischen der Anwendung und der Webressource über die Bundle-ID der Anwendung. Dadurch wird diese Verbindung eindeutig. Sie können auch die Abschnitte der Website angeben, die angezeigt werden in Ihrer mobilen Anwendung und Deep Linking funktioniert nur für sie. Na geil!

Wie funktioniert es


Der Link wird im System verarbeitet und die Domain (oder der Host) wird daraus extrahiert und direkt der Pfad, über den Sie die Navigation in der Anwendung steuern können: n-pizza ist in diesem Fall die Domain. Die Domäne sollte der Anwendung über eine spezielle Datei zugeordnet werden, die durch ein SSL-Zertifikat geschützt ist, das auf dem Standortserver gespeichert ist. Es sollte aufgerufen werden und eine spezielle JSON-Struktur enthalten.

https://n-pizza.com/margarita_new

apple-app-site-association

{
    "applinks": {
        "apps" :[],
        "details":{
            “123456.npizza.com” :{
                "paths": ["*"]
        }
    }
}

Wo 123456.npizza.com - app_bundle_id
“path” : [“*”]- gibt an, dass Ihre Anwendung alle Abschnitte der Webressource unterstützt. Andernfalls können Sie bestimmte Pfade angeben:

{
    "applinks": {
        "apps" :[],
        "details":{
            “123456.npizza.com" :{
                "paths": ["/margarita_new",
                          "/old/greate_pizza/*"]
        }
    }
}

Als Nächstes muss der erstellte JSON mit dem Zertifikat signiert werden, das für Ihre Webressource verwendet wird, oder es muss ein neues Zertifikat generiert werden (es ist zulässig, das WildCard-Zertifikat zu verwenden), JSON damit signieren und dem Server hinzufügen. Das Zertifikat, mit dem die Anwendung signiert ist, wird in diesem Fall nicht verwendet.

Es ist wichtig zu verstehen, dass für jede Domain eine eindeutige apple-app-site-associationDatei vorhanden sein muss:

n-pizza.com/apple-app-site-association

In der Anwendung müssen Sie in den Projekteinstellungen Zuordnungen zu den Domains herstellen, die Sie im Element „Associated Domains“ unterstützen. Und universelle Links müssen in der AppDelegate-Methode behandelt werden:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler

Wo wird die Art der Aktivität für universelle Links sein:

NSUserActivityTypeBrowsingWeb

Sie können die URL mit nativen Tools wie class zerlegen
NSURLComponents
oder Frameworks von Drittanbietern wie Facebook Bolts. Die weitere Navigation sollte gemäß dem oben beschriebenen bereits bekannten Schema erfolgen.

Infolgedessen befindet sich der Benutzer, der dem Link folgt, entweder auf der Ressource, zu der dieser Link geführt hat, oder in der Anwendung. Ein großes Plus dieser Lösung ist, dass URL-Schemata nicht verwendet werden. Aber nicht weniger als, dass die Lösung nur für iOS und nur mit Version 9 ist.

Kontextuelle Deep Linking


Alles, was oben geschrieben wurde, funktioniert einwandfrei und bewirkt, dass die Anwendung nur durchdrungen wird, wenn die Anwendung bereits installiert ist. Wenn Sie darüber nachdenken, wird der eigentliche Vorteil für große Unternehmen sein, deren Anwendungen auf den meisten Smartphone-Nutzern installiert sind und von denen es nicht mehr als 40-50 gibt.

Wenn die Anwendung nicht installiert ist und die meisten davon im AppStore oder in Google Play vorhanden sind, befindet sich der Benutzer auf der Seite der Website oder im Anwendungsspeicher, was ebenfalls nicht sehr gut ist, da Nach der Installation und dem Starten der Anwendung wird der Hauptbildschirm angezeigt. Jedes der Szenarien kommt einem defekten Deep Linking gleich.

Um die volle Wirkung von Deep Linking zu erzielen, gibt es kontextbezogene Deep Links. Das Wesentliche ihrer Arbeit ist, dass die Bedingung für den Wechsel zur Anwendung (Parameter im URL-Schema), nach der die weitere Navigation aufgebaut wird, und die Gerätekennung auf der Serverseite gespeichert werden. Nach der Installation und dem Starten der Anwendung wird diese Bedingung angefordert und die Navigation erstellt. Für den Benutzer sieht alles ordentlich und nahtlos aus.

Sie können diesen Ansatz in Verbindung mit einer der oben genannten Methoden implementieren. Oder verwenden Sie die fertige Lösung, indem Sie das SDK einbetten.

Jetzt auch beliebt: