So werden App-Indexierung und Deep-Linking richtig umgesetzt: Direkt in die App
Nachdem sich der erste Teil in der vorigen Ausgabe (t3n 42) mit den Grundlagen der App-Indexierung beschäftigt hat, geht es in diesem zweiten Artikel zum Thema App-Indexierung um die technische Umsetzung. Um eine App-Indexierung korrekt zu implementieren, sind nämlich mehrere Schritte erforderlich:
- Deep-Links implementieren: Nicht jede App lässt sich von Beginn an indexieren. Entwickler müssen vielmehr die Deep-Links vorbereiten, die eine Website mit einer App verknüpfen, sodass Google die App-Inhalte erkennt.
- Integration im Quellcode: Erst wenn die Deep-Links auch auf der Website verankert sind, können Nutzer Apps aus den mobilen Google-Suchergebnissen ohne den Umweg über die mobile Website aufrufen.
- Privat-Index optimieren: Nach der Optimierung des Privat-Index können Android- und iOS-App-Anwender Inhalte auf App-Seiten suchen.
Deep-Links implementieren
App-Entwickler müssen bei der Programmierung einige Anpassungen vornehmen, damit Android- und iOS-Apps richtig mit Deep-Links umgehen können und die App-Indexierung funktioniert.
URL-Schemata wählen
Mittels URL-Schemata lassen sich die Unterseiten einer App per Deep-Link strukturiert und systematisch mit entsprechenden URLs verknüpfen. Dafür gibt es zwei verschiedene URL-Schemata:
http-URL-Schema | |
iOS: Apple unterstützt das http-URL-Schema nicht | Android: http://example.com//deep-link (Beispiel) |
Custom-URL-Schema | |
iOS: example.com//deep-link (Beispiel) | Android: example.com//deep-link (Beispiel) |
Seit der Einführung von iOS 9 unterstützt Apple das Custom-URL-Schema für neue iOS-Versionen nicht mehr. Das Unternehmen hat es durch Universal Links ersetzt.

URL-Schema in der App unterstützen
Da Android- und iOS-Apps auf verschiedenen Frameworks basieren, müssen Entwickler sicherstellen, dass das von ihnen gewählte App-Schema in der App hinterlegt ist:
iOS | Android |
Die Unterstützung von Custom-URLs über die Info.plist-Datei einrichten. Den Support des „gsd-{scheme}“-Schemas gewährleisten (siehe auch „Back Bar bereitstellen“) | Intent-Filter des Android-Manifests (AndroidManifest.xml) einrichten. Er zeigt Android, welche App für welche Nutzerintention relevant ist, und ermöglicht so die Kommunikation mit anderen Apps. |
CocoaPods (iOS) einrichten
Für die App-Indexierung unter iOS [1] müssen Programmierer auf das CocoaPods-Management-Tool ausweichen, das die Kommunikation zwischen iOS-Apps und dem Google SDK ermöglicht.
iOS | Android |
CocoaPods installieren und „GoogleAppIndexing“-Pods innerhalb des Podfiles einrichten. | Keine Schritte erforderlich: Android-Apps kommunizieren direkt mit dem Google SDK. |
Back Bar bereitstellen
Da iPhones und iPads keine Hardware-Tasten haben, haben sie auch keinen Zurück-Button, der für viele Interaktionen in einer App von Bedeutung ist. Daher ist ein Workaround erforderlich, der die Zurück-Navigation nach dem Klick auf einen Deep-Link aus den Google-Suchergebnissen ermöglicht.
Die Konfiguration in der Info.plist-Datei sowie die Implementierung eines Code-Snippets gewährleisten, dass die App mit Google kommunizieren kann.
Indexierungs-Management
Wie auch bei Websites können App-Entwickler gewisse App-Screens von der Indexierung ausschließen. Aktuell gibt es diese Funktionalität allerdings nur unter Android.
iOS | Android |
Separates Indexierungs-Management ist aktuell nicht möglich. | noindex.xml-Datei mit den URLs der App-Screens erstellen, die von der Indexierung ausgeschlossen sein sollen. Die Datei im Resources-Verzeichnis hinterlegen (res/xml/noindex.xml). |
Integration im Quellcode
Damit Google eine App korrekt indexieren kann, müssen App-Entwickler die Website mit der App im Website-Quellcode verknüpfen. Diese Deep-Links leitet man jeweils mit „android-app“ oder „ios-app“ ein. Um die korrekte Implementierung zu testen, bietet Google ein Test-Tool für Deep-Links [2]
[3].
iOS | Android |
ios-app://{itunes_id}/{scheme}/{host_path} | androidapp://{package_name}/{scheme}/{host_ path} |
{package-name} = iTunes-ID / {scheme} = Definiertes URL-Schema / {host_path} = App-Screen-Unterseite |
{package-name} = Google Play Application-ID / {scheme} = Definiertes URL-Schema / {host_path} = App-Screen-Unterseite |
Beispiel: URL-Schema: example://hello-screen, Deep-Link: ios-app://123456/example/hello-screen |
Beispiel: URL-Schema: http://example.com/hello-screen, Deep-Link: androidapp://com.GooglePlayAppID.android/http/example.com/hello-screen |
Beispiel: URL-Schema: example://hello-screen, Deep-Link: android-app://com. GooglePlayAppID.android/example/hell o-screen |
Die Deep-URLs lassen sich auf drei unterschiedliche Arten im Quellcode einer Website implementieren:
<link rel="alternate" href="android-app://com.google.android.youtube/http/www.youtube.com/" /> <link rel="alternate" href="ios-app://544007664/vnd.youtube/www.youtube.com/" />
Listing 1
<url> <loc>http://example.com/gizmos</loc> <xhtml:link rel="alternate" href="android-app://com.google.android.youtube/http/www.youtube.com/" /> <xhtml:link rel="alternate" href="ios-app://544007664/vnd.youtube/www.youtube.com/" /> </url>
Listing 2
<Script Type="Application/Ld+Json"> { "@Context": "Http://Schema.Org", "@Type": "WebPage", "@Id": "Http://Example.Com/Gizmos", "PotentialAction": { "@Type": "ViewAction", "Target": "Android-App://Com.Example.Android/Http/Example.Com/Gizmos" } } </Script>
Listing 3
Den Private Index optimieren
Der Private Index ist ein benutzerdefinierter Index, den Google und Apple verwenden, um private Daten in einer mobilen App zu durchsuchen. App-Anwender können In-App-Inhalte damit per Google Now, Apples Spotlight oder Siri finden. Entwickler können damit die User Retention verbessern, was sich positiv auf das Ranking im App Store auswirken kann.
iOS | Android |
NSUserActivities als public-Variable definieren, um die App-Screens durch Apple zu indexieren und für den Private Index zu öffnen. | Googles App-Indexing-API implementieren und Activity-Markups nutzen. Jede App-Seite, die der App-Nutzer besucht, landet dann im Private Index und lässt sich durchsuchen. |

Mögliche Fehlerquellen
Google ist stets bemüht, Entwicklern bei Problemen zu helfen und Fehlern vorzubeugen. Die Google Search Console ist dabei die zentrale Anlaufstelle [4]. Crawling-Fehler der App geben Aufschluss über Art und Häufigkeit der Probleme:
- App nicht gefunden: Google konnte die App nicht im Google Play Store finden.
- URL nicht unterstützt: Die hinterlegte URL ist fehlerhaft, die App lässt sich nicht starten.
- Nicht übereinstimmender Inhalt: Der Inhalt der App stimmt nicht mit dem Inhalt der Website überein. Dies kann entweder an einem fehlerhaft implementierten Deep Link liegen oder daran, dass sich der Inhalt der App zu stark von dem der Website unterscheidet.
- Verstoß gegen Regeln bezüglich der Back Bar: Der Nutzer kann nicht zu den Suchergebnissen zurückkehren oder gelangt bei Klick auf die Back Bar auf eine andere Seite.
- Aus Index entfernt: Die App-Seiten entsprechen nicht den Google-Standards. Nutzer finden auf der App-Seite nicht, wonach sie suchen. Google indexiert die App-Seite daher nicht.
Bing, Apple und Co.
Auch andere große Unternehmen legen ihren Fokus auf Mobile Web und Apps. So kündigte Bing im Mai 2015 an [5], in Zukunft die Verknüpfung zwischen Apps und Websites zu erlauben, um einerseits ein besseres mobiles Nutzererlebnis zu gewährleisten und andererseits ebenfalls App-Installationen durch eine bessere Darstellung in der Suche zu ermöglichen.
Facebook gibt Entwicklern bereits seit 2014 [6] die Möglichkeit, Websites mit einer App zu verknüpfen. Somit können Mobile-Nutzer eine installierte App direkt starten, ohne zuvor den Browser aufrufen und die mobile Website laden zu müssen.
Apple hat mit der Einführung von iOS 9 und der Vorstellung der neuen Such-API [7] den nächsten Schritt für ein besseres Sucherlebnis auf den iOS-Geräten getan. Mit der API und der neuen In-App-Suche können Entwickler App-Inhalte indexier- und durchsuchbar machen, sodass App-Nutzer über die Spotlight-Suche nach Inhalten in den installierten Apps suchen und sich den Umweg über eine Suchmaschine sparen können.