This document discusses Google and Bing app indexing and deep linking. It provides an overview of how app indexing works on Android and iOS, including setting up deep links in app manifests and using APIs to optimize links. It also covers controlling indexing, alternative methods like using web markup, factors that impact deep link ranking, and implementing deep links for Bing on Windows phones using applinks.org markup.
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
Google & Bing App Indexing Tips for Mobile Marketers
1. Google & Bing App Indexing
Emily Grossman, Mobile Marketing Specialist, MobileMoxie
2. Meta-data can provide a
“preview” of the type of
content in the app
You don’t know what’s IN the
app until you download it
App Store search is heavy on
brand and head terms vs. long
tail
@goutaste #SMXMunich Emily Grossman | MobileMoxie 2
3. “Google’s mission is to organize the
world’s information and make it
universally accessible and useful.”
- Google’s initial mission statement -
@goutaste #SMXMunich Emily Grossman | MobileMoxie 3
10. Android VS iOS Apps
Android iOS
Step 1: Create Web Parity with Your App
Step 2: Set up HTTP Deep Links in Your App Manifest,
Exclude Deep Links with noindex.XML
Set up Universal Links in App & Server,
Exclude by Not Supporting for All Deep Links
Step 3: Optimize Deep Links in the App with API
Markup
Optimize Web Markup* Add Cocoa Pods & App
Indexing SDK Pod to App
Step 4: Submit Deep Links for Pre-Launch Crawling in
Google Search Console & Fix Errors
Say a meaningful prayer to the god of your choice
and/or grab a doughnut
Step 5: Go Live & Verify Proper Indexing & Behavior from SERPS
*Doh! Google can’t actually extract Title &Description info from iOS apps, so all keyword relevance comes from meta data on corresponding web
pages.
@goutaste #SMXMunich Emily Grossman | MobileMoxie 10
16. Prepare App:
• Modify your application delegate
• Adopt an entitlement in Xcode that
lists each domain associated with
your app
READ:
http://bit.ly/ios9universallinks
http://bit.ly/UIApplicationDelegate-
Reference
WATCH: http://bit.ly/appleuniversallinks
Universal Links (Where iOS Deep Links Are Born)
@goutaste #SMXMunich Emily Grossman | MobileMoxie 16
17. {
"applinks": {
"apps": [],
"details": {
»ABC0123.com.domain.App": {
"paths":[ "*" ]
}
}
}
}
Associate App with Website:
• Create an apple-app-site-
association file for each associated
domain with the content your app supports
and host it at the root level.
NOTE: The association file must be hosted on a
domain that supports HTTPS/TLS, even if the HTTP
deep links are not themselves served via HTTPS.
Universal Links (Where iOS Deep Links Are Born)
@goutaste #SMXMunich Emily Grossman | MobileMoxie 17
18. {
"applinks": {
"apps": [],
"details": {
»ABC0123.com.domain.App": {
"paths":[
”/folder/subfolder/”,
”/folder2/subfolder2/*”,
]
}
}
}
}
Modify apple-app-site-association
file to specify only the content that is parallel
between the app and the website.
@goutaste #SMXMunich Emily Grossman | MobileMoxie 18
Control Indexing
19. App Indexing API (Where Android Deep Links are Discovered)
– Update App Code to include Google Play Services
– Define Indexable Activities or Fragments in the
App
• View/Search/Watch/Like/Listen/Reserve, Etc.
(https://developers.google.com/android/reference/com/
google/android/gms/appindexing/Action)
– Modify App Activities or Fragments with proper
API Calls – Including:
• Title & Description
• Web Url, Multiple Web Urls or ‘Null’
@goutaste #SMXMunich Emily Grossman | MobileMoxie 19
20. ...
public class MainActivity extends Activity {
private GoogleApiClient mClient;
private Uri mUrl;
private String mTitle;
private String mDescription;
@Override
protected void onCreate(Bundle savedInstanceState) {
mClient = new
GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
mUrl = "http://examplepetstore.com/dogs/standard-poodle";
mTitle = "Standard Poodle";
mDescription = "The Standard Poodle stands at least 18 inches at the
withers";
}
...
Full code sample here: bit.ly/appindexingAPIcode
Android App Indexing API
@goutaste #SMXMunich Emily Grossman | MobileMoxie 20
22. ...
@Override
public void onStart() {
super.onStart();
mClient.connect();
AppIndex.AppIndexApi.start(mClient, getAction());
}
@Override
public void onStop() {
AppIndex.AppIndexApi.end(mClient, getAction());
mClient.disconnect();
super.onStop();
}...
Full code sample here: bit.ly/appindexingAPIcode
Android App Indexing API
“Can Haz Engagement Data?”
-Google
+ Extra
Rankings
Boost
@goutaste #SMXMunich Emily Grossman | MobileMoxie
23. 1. Use most up-to-date version of CocoaPods
2. Add ‘GoogleAppIndexing’ pod to Podfile
3. Save and Install Pod
4. Import GoogleAppIndexing
1. Register app
pod 'GoogleAppIndexing'
pod install
#import <GoogleAppIndexing/GoogleAppIndexing.h>
[[GSDAppIndexing sharedInstance] registerApp:your iTunes ID];
Google App Indexing “Pod” (Where iOS Deep
Links Are Discovered)
@goutaste #SMXMunich Emily Grossman | MobileMoxie 23
24. Where do I put my deep link Title and Description on iOS?
@goutaste #SMXMunich Emily Grossman | MobileMoxie 24
25. Where do I put my deep link Title and Description on iOS?
@goutaste #SMXMunich Emily Grossman | MobileMoxie 25
31. Android VS iOS Apps
Android iOS
Step 1: Create Web Parity with Your App
Step 2: Set up HTTP Deep Links in Your App Manifest,
Exclude Deep Links with noindex.XML
Set up Universal Links in App & Server,
Exclude by Not Supporting for All Deep Links
Step 3: Optimize Deep Links in the App with API
Markup
Optimize Web Markup* Add Cocoa Pods & App
Indexing SDK Pod to App
Step 4: Submit Deep Links for Pre-Launch Crawling in
Google Search Console & Fix Errors
Say a meaningful prayer to the god of your choice
and/or grab a doughnut
Step 5: Go Live & Verify Proper Indexing & Behavior from SERPS
*Doh! Google can’t actually extract Title & Description info from iOS apps, so all keyword relevance comes from meta data on corresponding
web pages.
@goutaste #SMXMunich Emily Grossman | MobileMoxie 31
32. Alternative Google App Indexing Methods (Android):
Web Markup Allow Googlebot App M URLs
@goutaste #SMXMunich Emily Grossman | MobileMoxie 32
33. Web Markup Allow Googlebot App M URLs
Custom URL Scheme
HTTP URL Scheme
Remember This?
@goutaste #SMXMunich Emily Grossman | MobileMoxie 33
Alternative Google App Indexing Methods (Android):
34. Web Markup Allow Googlebot App M URLs
Custom URL Scheme
HTTP URL Scheme
If you have to use custom
schemes, you will make
Google and Mariya sad have
to use web markup to tell
Google about your deep links
@goutaste #SMXMunich Emily Grossman | MobileMoxie 34
Alternative Google App Indexing Methods (Android):
35. Web Markup Allow Googlebot App M URLs
Custom URL Scheme
HTTP URL Scheme
If you have to use custom
schemes, you will make
Google and Mariya sad have
to use web markup to tell
Google about your deep links
@goutaste #SMXMunich Emily Grossman | MobileMoxie 35
And NO API BOOST for you.
Alternative Google App Indexing Methods (Android):
36. Web Markup Allow Googlebot App M URLs
android-app://com.travel_app/travel_app/travel-app.com/hotels/curtis-hotel-denver
Protocol PackageID Scheme
(custom)
Host Path
@goutaste #SMXMunich Emily Grossman | MobileMoxie 36
Alternative Google App Indexing Methods (Android):
37. Web Markup Allow Googlebot App M URLs
<head>
...
<link rel="alternate" href="android-
app://com.travelapp.android/http/travelapp.com/examplescreen" />
...
</head>
@goutaste #SMXMunich Emily Grossman | MobileMoxie 37
Alternative Google App Indexing Methods (Android):
38. Web Markup Allow Googlebot App M URLs
Update App’s Robots.txt:
User-Agent: Googlebot
Allow: /
@goutaste #SMXMunich Emily Grossman | MobileMoxie 38
Alternative Google App Indexing Methods (Android):
39. Web Markup Allow Googlebot App M URLs
• Uses an HTTP or HTTPS
link scheme
• Declare the Website-
App Association by
hosting a Digital Asset
Links (App Association)
file assetlinks.json
@goutaste #SMXMunich Emily Grossman | MobileMoxie 39
Alternative Google App Indexing Methods (Android):
40. Web Markup Allow Googlebot App M URLs
• Uses an HTTP or HTTPS
link scheme
• Declare the Website-
App Association by
hosting a Digital Asset
Links (App Association)
file assetlinks.json
@goutaste #SMXMunich Emily Grossman | MobileMoxie 40
Alternative Google App Indexing Methods (Android):
41. What Breaks Deep Links?
• Blocking Googlebot on Your Website
• Android Users Signed into the Wrong
Account
• Apple Products and Policies
• Bad Custom URL Schemes
• Bad handling of deep links in App Code
• Forgetting to Deep Link Pages on an mDot
subdomain, Mobile Subdirectory & other
Subdomains
@goutaste #SMXMunich Emily Grossman | MobileMoxie 41
42. @goutaste #SMXMunich Emily Grossman | MobileMoxie 42
You Need A
Separate Intent
Filter for EVERY
Domain Your
App Supports
43. Deep Link Ranking Factors in Google
Positive Ranking Factors
• Installation Status
• Good Technical Implementation
• Website SEO Signals
• App Indexing API (Android)
• Positive Engagement
Negative Ranking Factors
• Installation Status (Esp for iOS)
• Technical Errors
• Website SEO Signals
• Content Mis-Match
• Interstitials on Web
• Negative Engagement (Soon?)
+ -
@goutaste #SMXMunich Emily Grossman | MobileMoxie 43
48. Bing Deep Linking = Windows Phone Apps
1
2
3
4
Publish App To Windows
Store & Define Launch
Protocol (AKA URL Scheme)
Add applinks.org markups to
webpages that you want to
link your app to.
Test implementation.
Set up “URI Activation”
(AKA a default URL Scheme)
@goutaste #SMXMunich Emily Grossman | MobileMoxie 48
49. Bing Deep Linking = Windows Phone Apps
1
2
3
4
Publish App To Windows
Store & Define Launch
Protocol (AKA URL Scheme)
Add applinks.org markups to
webpages that you want to
link your app to.
Test implementation.
Set up “URI Activation”
(AKA a default URL Scheme)
@goutaste #SMXMunich Emily Grossman | MobileMoxie 49
51. FYI, This Same Protocol Used for Apple
Spotlight Search, Too
Just reference your iOS app properties instead…
@goutaste #SMXMunich Emily Grossman | MobileMoxie 51
53. Further Reading for a Deeper Understanding of
Deep Linking
@Goutast
e
http://searchengineland.com/app-indexing-new-frontier-seo-apple-search-ios-app-indexing-223880
http://searchengineland.com/app-indexing-new-frontier-seo-google-search-deep-linking-226517
@goutaste #SMXMunich Emily Grossman | MobileMoxie 53
HTTP can also be exactly the same URL as your website URLs, though you may decide you want to make them different or add some app-specific tracking to them.
On iOS setting up HTTP URLs is a little more tricky. It requires setting up Universal Links which is a system that Apple came up with that will allow your web URLs to open the same content in your app when that app is installed. To set this up, you have have your developer modify your application delegate and adopt what’s called an “entitlement” in Xcode that lists the web domains associated with your app.
Then you have to upload a JSON formatted file called an “apple-app-site-association file” to your server that specifies all the content you want linked to your web URLs.
Like a sitemap, the asterisk is a wild card that means everything in the folder is can be used. If you don’t want everything in the folder to be associated with your web content, then only specify the folders that you do.
NOTE: THE ‘MURL’ IS HTTP! DO NOT USE CUSTOM URL SCHEMES WITH APP INDEXING API CALLS!