Post on 19-Mar-2017
#SMX #31A @SuzzicksHow to Get Your Apps Indexed & Ranking ASAP!
What You Need To Know About Google App IndexingCindy Krum, CEO, MobileMoxieSMX 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
App Packs Store Listing App SingleYouTube Daily Mail/Mail
OnlineYelp
#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
XiOS App-NOT Installed User Experience
No App Store Landing Page Corresponding Web Link
#SMX #31A @Suzzicks
Android App-Installed User ExperienceApp Deep Link Corresponding Web Link
#SMX #31A @Suzzicks
Android App-NOT Installed User ExperienceNo Google Play Landing PageCorresponding Web Link
X
#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 Parity2.Public vs. Private3.Indexing Method
#SMX #31A @Suzzicks
Things to Think About Before You Start:
1.Website Parity2.Public vs. Private3.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 -Categor
yEnd-Level
Category
TOS
Home
Category
Category
Sub -Categor
yEnd-Level
Category
TOS
Web Url App Screen
#SMX #31A @Suzzicks
It All Starts with Parity Between App & Website
Home
Category
Category
Sub -Categor
yEnd-Level
Category
TOS
Home
Category
Category
Sub -Categor
yEnd-Level
Category
TOS
Web Url App Screen
#SMX #31A @Suzzicks
It All Starts with Parity Between App & WebsiteWeb Url App
Uri
#SMX #31A @Suzzicks
It All Starts with Parity Between App & WebsiteWeb Url App
Uri
#SMX #31A @Suzzicks
Parity vs. Non-Parity ContentWeb Url
App Uri
Web Content Missing from the App
#SMX #31A @Suzzicks24
Things to Think About Before You Start:
1.Website Parity2.Public vs. Private3.Indexing Method
#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
FavoritesPRIVATE
Private vs. Public IndexingWeb: App:
#SMX #31A @Suzzicks
Things to Think About Before You Start:
1.Website Parity2.Public vs. Private3.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-SpeakXcode: 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 AssociationFile 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 Serverhttps://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/appindexing/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
*No Web 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 AssociationFile 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 AssociationFile 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 FilesCocaoPodsWebsite Markup:
Schema, OG Tags, Twitter Cards & AppLinks.org
Apple-app-site-indexing file on HTTPS Web Server at http:///apple-app-site-association
Google AppIndexing 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. iOSAndroid iOS
Step 1:
Create Web Parity with Your App & Add Web Markup
Step 2:
Set up Deep Links in Your 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
Optimize Web Markup*
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 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, OG Tags, 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 FactorsInstallation StatusApp Indexing API (Android)Good Technical ImplementationWebsite/SEO SignalsPositive Engagement (Soon)
Negative Ranking FactorsContent Mis-MatchTechnical ErrorsInterstitialsInstallation 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’shttp://developer.android.com/guide/topics/ui/accessibility/apps.html
5. Check out Google’s Accessibity Checklisthttp://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 @SuzzicksSEE YOU AT THE NEXT #SMX
THANK YOU!
2 Months Free Deep Link Validator Tool AccessPromo Code: SMXWEST16