Cindy Krum speaks about App Indexing and How to Get Your Apps Indexed and Ranking ASAP at SMX West, San Jose 2016.
Topics in this presentation include:
- App Packs and Deep Links
- iOS Apps User Experience
- Parity
- Public vs. Private Indexing
What You Need to Know About Google App Indexing - SMX West 2016
1. #SMX #31A @Suzzicks
How to Get Your Apps Indexed & Ranking ASAP!
What You
Need To Know
About Google
App Indexing
Cindy Krum, CEO,
MobileMoxie
SMX West 2016
2. #SMX #31A @Suzzicks
App Discovery & App Content Discovery Have Both
Been Historically Problematic for Google Indexing
12. #SMX #31A @Suzzicks
• Main Benefits
• App Discovery – More Opportunities
• Deep App Content Discovery – New Possibility
• Marketing & Sharing in Non-Search Context (Email, Social, etc)
• Web/App Rankings – Algorithmic Boost – Single or Double
• Potential Future Benefits
• Inclusion in for App Streaming (Later)
• Hedge Against Potential Future Non – Parity App Rankings
(https://developers.google.com/app-indexing/app-only)
So What are the Benefits of App Indexing?
19. #SMX #31A @Suzzicks
It All Starts with Parity Between App & Website
Home
Category Category
Sub -
Category
End-Level
Category
TOS
Home
Category Category
Sub -
Category
End-Level
Category
TOS
Web Url App Screen
20. #SMX #31A @Suzzicks
It All Starts with Parity Between App & Website
Home
Category Category
Sub -
Category
End-Level
Category
TOS
Home
Category Category
Sub -
Category
End-Level
Category
TOS
Web Url App Screen
26. #SMX #31A @Suzzicks
2 Kinds of Deep Links
Publicly Indexable:
Static Navigational Deep Links
Corresponds to Primary Navigation
or Publicly Indexable User Flow
Submitted via the Google API
Privately Indexable:
User-Determined, Non-
Navigational Links
Privately Indexed Screens, Only
Indexed Once Accessed by the
Logged in User
– Google’s Private Index on Android
– Google’s Private Index on iOS Chrome
– Apple’s Index in Mobile Safari via
NSUserActivity
27. #SMX #31A @Suzzicks
Private Index
Pages:
• Shopping Cart
• Personal Dashboard
• History
• Personal Favorites
PRIVATE
Private vs. Public Indexing
Web: App:
28. #SMX #31A @Suzzicks
Things to Think About Before You Start:
1.Website Parity
2.Public vs. Private
3.Indexing Method
29. #SMX #31A @Suzzicks
Understanding Android App Developer-Speak
Intent: A bundle of technical information describing a desired activity in an app. These can be
explicit, for behavior within the app, or implicit, for broader interaction with other apps like phone
books, browsers or chat/SMS clients.
Intent Filter: How app components advertise their capabilities to interact with various intents.
Activity: Represents a single screen in the app.
Fragment: A portion of an Activity in the user interface. These are often used to accommodate
and re-configure app presentation for different screen sizes and orientations.
30. #SMX #31A @Suzzicks
Understanding iOS App Developer-Speak
Xcode: Xcode is the Apple software interface where you type your app code, compile it and execute (run) it.
Plist: Flexiable XML files where you can store information about your application.
Method: Represent the actions that an object knows how to perform. They're the logical counterpart to properties, which
represent an object's data
CocoaPods: Centralized dependency manager, libraries and ecosystem for Xcode projects. The dependencies for your
projects are specified in a single text file called a Podfile
CoreSpotlight & NSUserActivity: Allows Apple (but not Google) indexing of key app screens based on the app navigation
and specific instances within app screens based on actual use of the app
Google App Indexing SDK: Translates information from CoreSpotlight (and possibly NSUserActivity) into Indexable
information that can accommodate Googles App Indexing API
31. #SMX #31A @Suzzicks
How Do You Set Up Deep Links?
Markup to Link Web Urls w/ App URIs
in HTML or in XML Sitemaps
Google App Indexing API (HTTP Urls,
Android M Urls & Universal Links)
32. #SMX #31A @Suzzicks
How Do You Set Up Deep Links?
Markup to Link Web Urls w/ App URIs
in HTML or in XML Sitemaps
Google App Indexing API (HTTP Urls,
Android M Urls & Universal Links)
Easiest
for SEO’s
33. #SMX #31A @Suzzicks
How Do You Set Up Deep Links?
Markup to Link Web Urls w/ App URIs
in HTML or in XML Sitemaps
Google App Indexing API (HTTP Urls,
Android M Urls & Universal Links) Easiest for App
Developers!
34. #SMX #31A @Suzzicks
How Do You Set Up Deep Links?
Markup to Link Web Urls w/ App URIs
in HTML or in XML Sitemaps
Google App Indexing API (HTTP Urls,
Android M Urls & Universal Links)
Easiest
for SEO’s
35. #SMX #31A @Suzzicks
Deep Linking Markup Connects App Screens w/ Web
Pages Website:
<link rel="alternate" href="android-
app://com.gizmos.android/http/gizmos.com/example
" />
<link rel="alternate" href="ios-
app://123456/http/gizmos/example" />
App:
Enable App Deep Link schemes in your app - ideally
with HTTP Schemes in Android, and Universal Links
in iOS.
JADON-LD Libraries like
http://mobiledeeplinking.org/ can be used to make
this process easier with pattern matching, wild cards
and regular expressions
http://www.domain.org/product/123 domain://product/123
37. #SMX #31A @Suzzicks
• You can include
Deep App Links as
Rel=“Alternate” in
your XML sitemap
too
Deep Links in Sitemaps
38. #SMX #31A @Suzzicks
How Do You Set Up Deep Links?
Markup to Link Web Urls w/ App URIs
in HTML or in XML Sitemaps
Google App Indexing API (HTTP Urls,
Android M Urls & Universal Links) Easiest for App
Developers!
39. #SMX #31A @Suzzicks
Set Up Universal Links,
App Indexing SDK &
Add Site Association
File to the Web Server
App Indexing Elements by OS
App Indexing API
OR
Do Nothing
CocoaPods
=
=
+
+ +
40. #SMX #31A @Suzzicks
Using the Android App Deep Linking API
Update the App Code to include Google Play Services
Upload App Association file to HTTPS Web Server
https://domain[:optional_port]/.well-known/assetlinks.json
Define Indexable Activities in the App
– View/Search/Watch/Like/Listen/Reserve, Etc.
(https://developers.google.com/android/reference/com/google/android/gms/app
indexing/Action)
Modify App Activities with proper API Annotation – Each
Activity Includes:
– Title & Description
– Web Url, Multiple Web Urls or ‘Null’
Verify in Search Console – If Live, Also Check
https://history.google.com/history/ from a Device that Used the
App
*NoWeb Components Required -Will Probably Work When Google Begins Indexing Non-Parity Content
41. #SMX #31A @Suzzicks
Noindex.XML for Blocking App Indexing on Certain
Screens
• Blocks certain aspects of the app from Google indexing
• Save it here: res/xml/noindex.xml
• Reference it from the AndroidManifest.xml with this:
<meta-data android:name="search-engine"
android:resource="@xml/noindex"/>
• The XML looks like this:
Open For
Indexing
Private –
Indexable
to the
Private
Index
Noindex–
Blocked
from all
Indexing
42. #SMX #31A @Suzzicks
App Indexing Elements by OS
App Indexing API
OR
Just Don’t Block
Crawlers
Set Up Universal Links,
App Indexing SDK &
Add Site Association
File to the Web Server
=
=
+
+ +CocoaPods
43. #SMX #31A @Suzzicks
App Indexing Elements by OS
App Indexing API
OR
Just Don’t Block
Crawlers
Set Up Universal Links,
App Indexing SDK &
Add Site Association
File to the Web Server
=
=
+
+ +CocoaPods
44. #SMX #31A @Suzzicks
Setting Up iOS App Indexing with the SDK
Setup Universal Links
– App Code: List domains that will get deep links from your app in the proper Xcode
entitlement (com.apple.developer.associated-domains)
– Website: Create apple-app-site-association file for each domain that gets deep links
from your app & upload to your HTTPS webserver http:///apple-app-site-association
App Code
– Setup CocaoPods
– Call the RegisterApp method in the FinishedLaunching method like this:
AppIndexing.SharedInstance.RegisterApp ("YOUR_ITUNES_ID");
– Add Google’s App Indexing SDK
All Google is Crawling is the App Site Association File, so Keyword Relevance
for Deep App Links is Based on Keywords in the Web Content
45. #SMX #31A @Suzzicks
Visual for iOS App Indexing
Website & Server App Code Files
CocaoPodsWebsite Markup: Schema,
OGTags,Twitter Cards &
AppLinks.org
Apple-app-site-indexing file
on HTTPSWeb Server at
http:///apple-app-site-
association
Google App
Indexing SDK
RegisterApp with Google in
the FinishedLaunching
method
List web domains that
get deep links from
your app in the Xcode
entitlement
(com.apple.developer.
associated-domains)
46. #SMX #31A @Suzzicks
SUMMARY: App Indexing for Android vs. iOS
Android iOS
Step 1: CreateWeb Parity withYour App & Add Web Markup
Step 2: Set up Deep Links inYour App Manifest Set up Universal Links.Add Cocao Pods &
the App Indexing SDK Pod
Step 3: Optimize Deep Links in the App with API
Markup
OptimizeWeb Markup*
Step 4: Submit Deep Links for Pre-LaunchCrawling 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 crawl or extract information from iOS apps, so all keyword relevance comes from the markup
on the corresponding web pages.This includes page meta data, Twitter Cards, OGTags, Schema.org & AppLinks.org
markup.
47. #SMX #31A @Suzzicks
NEW: Android M Deep Link Indexing (Not the OS)
• Ambiguous & Announced to
Developers but Not Explained to
Webmasters Yet
• Seems Like Just Android
• Seems Useful for iOS too…
• Uses an HTTP or HTTPS link scheme
• Declare the Website-App Association
by hosting a Digital Asset Links (App
Association) file assetlinks.json
• Use the autoVerify attribute in the
manifest to associate the App URI’s
with the Web URLs for Google
48. #SMX #31A @Suzzicks
Deep Link Ranking Factors
Positive Ranking Factors
Installation Status
App Indexing API (Android)
Good Technical Implementation
Website/SEO Signals
Positive Engagement (Soon)
Negative Ranking Factors
Content Mis-Match
Technical Errors
Interstitials
Installation Status (Esp for iOS)
Negative Engagement (Soon)
+ -
49. #SMX #31A @Suzzicks
What Breaks Deep Links?
• Blocking GoogleBot on Your Website
• Forgetting to Deep Link Pages on an
mDot subdomain, Mobile
Subdirectory & other Subdomains
• Android Users Signed into the Wrong
Account
• Apple Products and Policies
• Bad Custom Url Schemes
50. #SMX #31A @Suzzicks
Improving Deep Links for
Better Integration with
Google Now on Tap (The
Assistant)
Deep Links Can Surface in
Now on Tap for Android
Phones Running
Marshmallow
51. #SMX #31A @Suzzicks
Driving Contextual Results from Now on Tap
Providing Global App Context
• Enhances Results & Cross-App
Behavior by Adding Actions Like Play,
Email, Photo to the Search Result
• Update the App to Include
Schema.org Markup in JASON-LD
• Some of this Can Happen Naturally if
the App is Considered ‘Accessible’
52. #SMX #31A @Suzzicks
Android App Accessibility
1. Fill in the android:contentDescription attribute.
Pay particular attention to ImageButton,
ImageView and CheckBox
2. Accompany all audio prompts with visual prompts
3. Enable navigation gestures and directional
controlling for input fields & user interface
elements
4. Integrate with Android Accessibility API’s
http://developer.android.com/guide/topics/ui/acces
sibility/apps.html
5. Check out Google’s Accessibity Checklist
http://developer.android.com/training/accessibility
/testing.html
53. #SMX #31A @Suzzicks
Now on Tap Ranking
Signals
• Ranking signals appear to be
heavily weighted in favor of
social signals – Notice that
Lance Ulanoff is out ranking
me, even on my own Twitter
page.
• Also notice, Now on Tap has
not indexed my Twitter
account, Google+ Account or
Images to my name.
54. #SMX #31A @Suzzicks
Deep Link to Previously-
Viewed ‘Calafia Café’
Screen in the Zagat App
Android App Indexing APINow on Tap Can also Surface Privately Indexed Content
that is Not Available for Public Indexing
55. #SMX #31A @Suzzicks
Further Reading for a Deeper Understanding of Deep
Linking
@Goutaste
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
58. #SMX #31A @Suzzicks
SEE YOU AT THE NEXT #SMX
THANK YOU!
2 Months Free Deep Link Validator Tool Access
Promo Code: SMXWEST16
Editor's Notes
A Process that Allows Google to Understand & Rank App Content in Mobile Search Results
Associate Places or ‘Screens’ in Apps with Web Urls
Potentially Lets Save Places or ‘Screens’ to Android’s Private Index Even without Web Urls
SEO value of the Web Url is Passed to the App Screen
First-Adopter Ranking Boost is passed from the App to the Website
Users Choose if they Prefer the App or Web Experience
What are the Benefits?
What is the Deep Link UX?
How Do You Set Up Deep Links?
What Conditions Impact their Presentation?
What is the Future of Deep Linking?
Easier App Discovery & Engagement in Search (For Android)
App Engagement From Search (For iOS)
User Controls App or Web Decision
Better Engagement from Other Marketing Channels
Email
Social
App Action & Google Now Integration
Organic Rankings Boost for App Site Association
Additional Organic Rankings Boost for App Indexing API Integration
Easier App Discovery & Engagement in Search (For Android)
App Engagement From Search (For iOS)
User Controls App or Web Decision
Better Engagement from Other Marketing Channels
Email
Social
App Action & Google Now Integration
Organic Rankings Boost for App Site Association
Additional Organic Rankings Boost for App Indexing API Integration
App Manifest: Organizing information for the app like what code it runs, what actions are possible and what permissions are necessary. Let the system know what the components are and under what conditions they can be launched
In Android, create intent filters that specifies the scheme, host, and path pattern of URLs that it wants to handle: in this case, https://www.example.com.
To Check the JASON File Links, use this API: https://digitalassetlinks.googleapis.com/v1/statements:list? source.web.site=https://<domain1>:<port>& relation=delegate_permission/common.handle_all_urls
Until recently, Google’s App Indexing API has been used solely to index previously-viewed android deep links for inclusion in Google’s autocomplete, but now it’s Google’s preferred method for app indexing. This is because, if your app supports HTTP scheme URLs, Google can now use the App Indexing API to discover new screens in your app as they are created. This is great for Google because they no longer have to rely on their web crawler to find App Screen URLs.
Until recently, Google’s App Indexing API has been used solely to index previously-viewed android deep links for inclusion in Google’s autocomplete, but now it’s Google’s preferred method for app indexing. This is because, if your app supports HTTP scheme URLs, Google can now use the App Indexing API to discover new screens in your app as they are created. This is great for Google because they no longer have to rely on their web crawler to find App Screen URLs.