#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
#SMX #31A @Suzzicks
App Discovery & App Content Discovery Have Both
Been Historically Problematic for Google Indexing
#SMX #31A @Suzzicks
What is App Indexing?
#SMX #31A @Suzzicks
Deep App Links Go to Apps
#SMX #31A @Suzzicks
App Links Go to App Stores
#SMX #31A @Suzzicks
App Packs ≠ Deep Links
But Deep Links are a Small
Ranking Factor for App Pack
Results.
#SMX #31A @Suzzicks
iOS App-Installed User Experience
App Deep Link Corresponding Web Link
#SMX #31A @Suzzicks
iOS App-NOT Installed User Experience
No App Store Landing Page Corresponding Web Link
#SMX #31A @Suzzicks
Android App-Installed User Experience
App Deep Link Corresponding Web Link
#SMX #31A @Suzzicks
Android App-NOT Installed User Experience
No Google Play Landing Page Corresponding Web Link
#SMX #31A @Suzzicks
So What are the Benefits of App Indexing?
#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?
#SMX #31A @Suzzicks
Apps Are A Big Deal
60% of this
Time is in
Communication
& Media Apps
#SMX #31A @Suzzicks
A Few Apps Get
a Bulk of the
Visitors
#SMX #31A @Suzzicks
Things to Think About Before You Start:
1.Website Parity
2.Public vs. Private
3.Indexing Method
#SMX #31A @Suzzicks
Things to Think About Before You Start:
1.Website Parity
2.Public vs. Private
3.Indexing Method
#SMX #31A @Suzzicks
Party Time?
#SMX #31A @Suzzicks
#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
#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
#SMX #31A @Suzzicks
It All Starts with Parity Between App & Website
Web Url App Uri
#SMX #31A @Suzzicks
It All Starts with Parity Between App & Website
Web Url App Uri
#SMX #31A @Suzzicks
Parity vs. Non-Parity Content
Web Url App Uri
Web
Content
Missing
from the
App
#SMX #31A @Suzzicks
Things to Think About Before You Start:
1.Website Parity
2.Public vs. Private
3.Indexing Method
23
#SMX #31A @Suzzicks
2 Kinds of Deep Links
#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
#SMX #31A @Suzzicks
Private Index
Pages:
• Shopping Cart
• Personal Dashboard
• History
• Personal Favorites
PRIVATE
Private vs. Public Indexing
Web: App:
#SMX #31A @Suzzicks
Things to Think About Before You Start:
1.Website Parity
2.Public vs. Private
3.Indexing Method
#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.
#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
#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)
#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
#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!
#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
#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
#SMX #31A @Suzzicks
Adding in-App Markup for Deep Link Optimization
#SMX #31A @Suzzicks
• You can include
Deep App Links as
Rel=“Alternate” in
your XML sitemap
too
Deep Links in Sitemaps
#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!
#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
=
=
+
+ +
#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
#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
#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
#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
#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
#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)
#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.
#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
#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)
+ -
#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
#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
#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’
#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
#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.
#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
#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
#SMX #31A @Suzzicks
http://searchengineland.com/android-marshmallow-seo-series-sponsored-google-now-cards-23-234719
http://searchengineland.com/android-marshmallow-seo-series-googles-private-index-screen-crawling-234711
@Suzzicks
Further Reading for a Deeper Understanding of Android
Marshmallow & Now on Tap
#SMX #31A @Suzzicks
bit.ly/universal-links-tool
#SMX #31A @Suzzicks
SEE YOU AT THE NEXT #SMX
THANK YOU!
2 Months Free Deep Link Validator Tool Access
Promo Code: SMXWEST16

What You Need to Know About Google App Indexing - SMX West 2016

  • 1.
    #SMX #31A @Suzzicks Howto 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 AppDiscovery & App Content Discovery Have Both Been Historically Problematic for Google Indexing
  • 3.
    #SMX #31A @Suzzicks Whatis App Indexing?
  • 4.
    #SMX #31A @Suzzicks DeepApp Links Go to Apps
  • 5.
    #SMX #31A @Suzzicks AppLinks Go to App Stores
  • 6.
    #SMX #31A @Suzzicks AppPacks ≠ Deep Links But Deep Links are a Small Ranking Factor for App Pack Results.
  • 7.
    #SMX #31A @Suzzicks iOSApp-Installed User Experience App Deep Link Corresponding Web Link
  • 8.
    #SMX #31A @Suzzicks iOSApp-NOT Installed User Experience No App Store Landing Page Corresponding Web Link
  • 9.
    #SMX #31A @Suzzicks AndroidApp-Installed User Experience App Deep Link Corresponding Web Link
  • 10.
    #SMX #31A @Suzzicks AndroidApp-NOT Installed User Experience No Google Play Landing Page Corresponding Web Link
  • 11.
    #SMX #31A @Suzzicks SoWhat are the Benefits of App 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?
  • 13.
    #SMX #31A @Suzzicks AppsAre A Big Deal 60% of this Time is in Communication & Media Apps
  • 14.
    #SMX #31A @Suzzicks AFew Apps Get a Bulk of the Visitors
  • 15.
    #SMX #31A @Suzzicks Thingsto Think About Before You Start: 1.Website Parity 2.Public vs. Private 3.Indexing Method
  • 16.
    #SMX #31A @Suzzicks Thingsto Think About Before You Start: 1.Website Parity 2.Public vs. Private 3.Indexing Method
  • 17.
  • 18.
  • 19.
    #SMX #31A @Suzzicks ItAll 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 ItAll 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
  • 21.
    #SMX #31A @Suzzicks ItAll Starts with Parity Between App & Website Web Url App Uri
  • 22.
    #SMX #31A @Suzzicks ItAll Starts with Parity Between App & Website Web Url App Uri
  • 23.
    #SMX #31A @Suzzicks Parityvs. Non-Parity Content Web Url App Uri Web Content Missing from the App
  • 24.
    #SMX #31A @Suzzicks Thingsto Think About Before You Start: 1.Website Parity 2.Public vs. Private 3.Indexing Method 23
  • 25.
    #SMX #31A @Suzzicks 2Kinds of Deep Links
  • 26.
    #SMX #31A @Suzzicks 2Kinds 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 PrivateIndex Pages: • Shopping Cart • Personal Dashboard • History • Personal Favorites PRIVATE Private vs. Public Indexing Web: App:
  • 28.
    #SMX #31A @Suzzicks Thingsto Think About Before You Start: 1.Website Parity 2.Public vs. Private 3.Indexing Method
  • 29.
    #SMX #31A @Suzzicks UnderstandingAndroid 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 UnderstandingiOS 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 HowDo 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 HowDo 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 HowDo 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 HowDo 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 DeepLinking 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
  • 36.
    #SMX #31A @Suzzicks Addingin-App Markup for Deep Link Optimization
  • 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 HowDo 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 SetUp 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 Usingthe 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.XMLfor 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 AppIndexing 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 AppIndexing 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 SettingUp 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 Visualfor 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 DeepLink 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 WhatBreaks 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 ImprovingDeep 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 DrivingContextual 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 AndroidApp 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 Nowon 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 DeepLink 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 FurtherReading 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
  • 56.
  • 57.
  • 58.
    #SMX #31A @Suzzicks SEEYOU AT THE NEXT #SMX THANK YOU! 2 Months Free Deep Link Validator Tool Access Promo Code: SMXWEST16

Editor's Notes

  • #4 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?
  • #12 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
  • #13 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
  • #14 http://digiday.com/platforms/mobile-apps-driving-digital-growth-5-charts/
  • #15 http://digiday.com/platforms/mobile-apps-driving-digital-growth-5-charts/
  • #31 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
  • #36 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
  • #38 http://developer.android.com/training/app-indexing/enabling-app-indexing.html
  • #48 https://developers.google.com/app-indexing/reference/deeplinks
  • #51 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.
  • #52 http://developer.android.com/training/articles/assistant.html http://developer.android.com/guide/topics/ui/accessibility/apps.html
  • #55 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.