SlideShare a Scribd company logo
#SMX #23C @goutaste
Emily Grossman, MobileMoxie
Beyond The Web: Why App Deep
Linking Is The Next Big Thing
#SMX #23C @goutaste
 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
#SMX #23C @goutaste
“Google’s mission is to organize the world’s
information and make it universally accessible
and useful.”
- Google’s initial mission statement -
#SMX #23C @goutaste
#SMX #23C @goutaste
http://www.tripadvisor.com/Hotel_Review-g33388-d83020-
Reviews-
The_Curtis_Denver_a_DoubleTree_by_Hilton_Hotel-
Denver_Colorado.html
tripadvisor://Hotel_Review-g33388-d83020-Reviews-
The_Curtis_Denver_a_DoubleTree_by_Hilton_Hotel-
Denver_Colorado.html
#SMX #23C @goutaste
Google App Indexing
bit.ly/appindexinggoogle
#SMX #23C @goutaste
#SMX #23C @goutaste
#SMX #23C @goutaste
AUG
11
AUG
125
#SMX #23C @goutaste
AUG
11
AUG
129
#SMX #23C @goutaste
#SMX #23C @goutaste
Google App Indexing:
ANDROID
#SMX #23C @goutaste
Android – Intent Filters
Custom URL Scheme
HTTP URL Scheme
Create Intent Filters:
#SMX #23C @goutaste
Android – Intent filters
Intent Filters need:
<action>
<data>
android:scheme
android:path
<category>
#SMX #23C @goutaste
Android App Indexing API
Deep Link to previously-
viewed ‘Calafia Café’
screen in the Zagat app
#SMX #23C @goutaste
Android App Indexing API
...
public class MainActivity extends Activity {
static final Uri APP_URI = Uri.parse("android-app://com.example.android.recipes/http/recipe-
app.com/recipes");
static final Uri WEB_URL = Uri.parse("http://recipe-app.com/recipes/");
private GoogleApiClient mClient;
...
}
@Override
public void onStop() {
...
// Call end() and disconnect the client
String title = "App Indexing API Title";
Action viewAction = Action.newAction(Action.TYPE_VIEW, title, WEB_URL, APP_URI);
AppIndex.AppIndexApi.end(mClient, viewAction);
mClient.disconnect();
... Full code sample here: bit.ly/appindexingAPIcode
#SMX #23C @goutaste
Android – Robots.txt (Required if you don’t use the API)
Update App’s Robots.txt:
User-Agent: Googlebot
Allow: /
#SMX #23C @goutaste
Custom URL Schemes:
Web Markup
#SMX #23C @goutaste
Android
Deep Link URL Format:
android-app://com.travel_app/travel_app/travel-app.com/hotels/curtis-hotel-denver
Protocol PackageID Scheme
(custom)
Host Path
#SMX #23C @goutaste
Rel=alternate XML Sitemaps Schema
<head>
...
<link rel="alternate" href="android-
app://com.travelapp.android/http/travelapp.com/examplescreen" />
...
</head>
<head>
...
<link rel="alternate" href="android-app://com.travelapp.android/travelapp/examplescreen"
/>
<link rel="alternate" href="ios-app://123456/travelapp/examplescreen" />
...
</head>
#SMX #23C @goutaste
Rel=alternate XML Sitemaps Schema
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://travelwebsite.com/examplepage</loc>
<xhtml:link rel="alternate" href="android-app://com.travelapp.android/travelapp/examplescreen"
/>
<xhtml:link rel="alternate" href="ios-app://123456/travelapp/examplescreen" /></url>
<xhtml:link rel="alternate" href="android-
app://com.travelapp.android/http/travelapp.com/examplescreen" />
...
</urlset>
#SMX #23C @goutaste
Rel=alternate SchemaXML Sitemaps
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "http://travelwebsite.com/examplepage",
"potentialAction": {
"@type": "ViewAction",
"target": "android-app://com.travelapp.android/http/travelapp.com/examplescreen"
}
}
</script>
#SMX #23C @goutaste
Android – Google Play Developer Console/ Google Search Console Sync
#SMX #23C @goutaste
Google App Indexing:
iOS
#SMX #23C @goutaste
The Good News Is…
#SMX #23C @goutaste
The Bad News Is…
#SMX #23C @goutaste
iOS – Support Universal Links
https://subdomain.domain.com/path/subpath/
Scheme
“http” or “https”
Domain or Host Name Path or Prefix
Anatomy of a Universal Link:
#SMX #23C @goutaste
iOS – Support Universal Links
Requirements:
• A registered domain
• SSL access to your domain
• Ability to upload a JSON file to your domain
#SMX #23C @goutaste
iOS – Support Universal Links
1 Get Your App
Ready
• 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
#SMX #23C @goutaste
iOS – Support Universal Links
2 Get Your Server
Ready
• 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.
{
"applinks": {
"apps": [],
"details": {
»ABC0123.com.domain.App": {
"paths":[ "*" ]
}
}
}
}
#SMX #23C @goutaste
iOS – Support Universal Links
2
{
"applinks": {
"apps": [],
"details": {
»ABC0123.com.domain.App": {
"paths":[
”/folder/subfolder/”,
”/folder2/subfolder2/*”,
]
}
}
}
}
Get Your Server
Ready
• 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.
#SMX #23C @goutaste
iOS – Cocoapods Support
#SMX #23C @goutaste
iOS – Cocoapods Support
#SMX #23C @goutaste
iOS – Cocoapods Support
#SMX #23C @goutaste
iOS – Cocoapods Support
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];
#SMX #23C @goutaste
Custom URL Schemes:
Web Markup
#SMX #23C @goutaste
Image attribution: http://k9s4cops.org/coming-soon-the-pack/
iOS – Testing
#SMX #23C @goutaste
Apple Search App Indexing
#SMX #23C @goutaste
“Apple’s App Store commission is now at a
run-rate of $9 billion, more than its total revenue
in the year the iPod launched.”
- Benedict Evans, @BenedictEvans -
#SMX #23C @goutaste
Apple Search
SPOTLIGHT SAFARISIRI
#SMX #23C @goutaste
High-Engagement
App Screens
Suggested in
‘Siri Suggestions’ on
iOS 9 Spotlight
#SMX #23C @goutaste
DEVICE INDEX
(PRIVATE)
CLOUD INDEX
(PUBLIC)
Apple Search Sources from Two Indexes
#SMX #23C @goutaste
APPLE SEARCH APP INDEXING
CoreSpotlight NSUserActivity Web Markup
#SMX #23C @goutaste
Apple Search App Indexing
Option 1:
NSUserActivity
#SMX #23C @goutaste
Core Spotlight NSUserActivity Web Markup
Used for…
Indexing public app screens
that mirror content on the web
DOES require corresponding
web content
Add code to WEB
Public Cloud Index
Used for…
Indexing app screens that
contain private/ personal data
Does NOT require
corresponding web content
Add code to APP
Private Device Index
Used for…
Indexing private and public
navigation points in the app
Does NOT require
corresponding web content
Add code to APP
Private Device Index and/ or
Public Cloud Index
Private Public
#SMX #23C @goutaste
NSUserActivity
Private or Public
Public Only
Search results
meta data for
display and rankings
‘Canonical’
More info here: bit.ly/NSUserActivity
#SMX #23C @goutaste
CoreSpotlight NSUserActivity Web MarkupNSUserActivity
with var eligibleForSearch with var eligibleForPublicIndexing
Private/
Device Index
Public/ Cloud Index
PRIVATE APP SCREEN PUBLIC APP SCREEN
#SMX #23C @goutaste
Apple Search App Indexing
Option 2:
Core Spotlight
#SMX #23C @goutaste
Core Spotlight NSUserActivity Web Markup
Used for…
Indexing public app screens
that mirror content on the web
DOES require corresponding
web content
Add code to WEB
Public Cloud Index
Used for…
Indexing app screens that
contain private/ personal data
Does NOT require
corresponding web content
Add code to APP
Private Device Index
Used for…
Indexing private and public
navigation points in the app
Does NOT require
corresponding web content
Add code to APP
Private Device Index and/ or
Public Cloud Index
Private Public
#SMX #23C @goutaste
CoreSpotlight
Search results
meta data for
display and rankings
More info here: bit.ly/corespotlight
#SMX #23C @goutaste
Apple Search App Indexing
Option 3:
Web Markup
#SMX #23C @goutaste
CoreSpotlight NSUserActivity Web MarkupNSUserActivity
with var eligibleForSearch with var eligibleForPublicIndexing
Private/
Device Index
Public/ Cloud Index
PRIVATE APP SCREEN PUBLIC APP SCREEN
#SMX #23C @goutaste
Core Spotlight NSUserActivity Web Markup
Used for…
Indexing public app screens
that mirror content on the web
DOES require corresponding
web content
Add code to WEB
Public Cloud Index
Used for…
Indexing app screens that
contain private/ personal data
Does NOT require
corresponding web content
Add code to APP
Private Device Index
Used for…
Indexing private and public
navigation points in the app
Does NOT require
corresponding web content
Add code to APP
Private Device Index and/ or
Public Cloud Index
Private Public
#SMX #23C @goutaste
Web Markup
#SMX #23C @goutaste
Web Markup
Twitter Cards AppLinks Smart App Banners
#SMX #23C @goutaste
Web Markup
Twitter Cards AppLinks Smart App Banners
#SMX #23C @goutaste
Web Markup
Twitter Cards AppLinks Smart App Banners
#SMX #23C @goutaste
Web Markup – Meta Data (Schema & Open Graph)
#SMX #23C @goutaste
http://bit.ly/applesearchvalidator
#SMX #23C @goutaste
THANK YOU!
SEE YOU @SMX WEST
SAN JOSE, CA
MARCH 1-3, 2016

More Related Content

PDF
An Introduction to Deep Linking and App Indexing Codelab
PDF
How to Setup App Indexation
PDF
App Indexing: Blurring the Lines Between Your Website and App
PPTX
What You Need to Know About Google App Indexing - SMX West 2016
PDF
Google App indexing
PDF
iOS & Android App Indexing & App Actions
PDF
Increasing App Installs With App Indexation By Justin Briggs
PPTX
Android Deep Linking
An Introduction to Deep Linking and App Indexing Codelab
How to Setup App Indexation
App Indexing: Blurring the Lines Between Your Website and App
What You Need to Know About Google App Indexing - SMX West 2016
Google App indexing
iOS & Android App Indexing & App Actions
Increasing App Installs With App Indexation By Justin Briggs
Android Deep Linking

What's hot (19)

PDF
Advanced Structured Data: Beyond Rich Snippets
PPTX
How to Optimize Apps for Apple iOS Search and iOS 9 Universal Links - SMX Wes...
PPTX
Deep linking slides
PDF
Deep linking
PDF
Basics to Search Engine Optimization & App Store Optimization with Pooja Goyal
PPTX
Mobile Deep linking
PPTX
android deep linking
PPTX
Firebase App-Indexing - SMX London 2016
PDF
UaMobitech - App Links and App Indexing API
PPTX
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
PPTX
Emily Grossman App Indexing SMX West 2017
PDF
Mobile Deep Linking for Apps – What? Why? How?
PPTX
App Deep Linking
PDF
Mobile Deep Linking - Definition, Benefits and Implementation
PPTX
From Website to Web App - Indexing, Optimizing, and Auditing Experiences for ...
PPTX
Indexing on Fire: Google Firebase Native & Web App Indexing - MozCon 2016
PPTX
Looking Beyond Website Competition: How Apps Impact Local-Mobile Searches
PPTX
Firebase App Indexing - SMX Advanced
PPTX
Cindy Krum Krum Cindy "What SEOs Need To Know About Progressive Web Apps" SMX...
Advanced Structured Data: Beyond Rich Snippets
How to Optimize Apps for Apple iOS Search and iOS 9 Universal Links - SMX Wes...
Deep linking slides
Deep linking
Basics to Search Engine Optimization & App Store Optimization with Pooja Goyal
Mobile Deep linking
android deep linking
Firebase App-Indexing - SMX London 2016
UaMobitech - App Links and App Indexing API
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Emily Grossman App Indexing SMX West 2017
Mobile Deep Linking for Apps – What? Why? How?
App Deep Linking
Mobile Deep Linking - Definition, Benefits and Implementation
From Website to Web App - Indexing, Optimizing, and Auditing Experiences for ...
Indexing on Fire: Google Firebase Native & Web App Indexing - MozCon 2016
Looking Beyond Website Competition: How Apps Impact Local-Mobile Searches
Firebase App Indexing - SMX Advanced
Cindy Krum Krum Cindy "What SEOs Need To Know About Progressive Web Apps" SMX...
Ad

Similar to Why Deep Linking is the Next Big Thing: App Indexing - SMX East 2015 (20)

PPTX
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
PDF
How to Optimize Apps for Apple iOS Search and iOS 9 Universal Links By Emily ...
PPTX
Google & Bing App Indexing - SMX Munich 2016
PPTX
How Apple's Changing Up Search: From Siri to Safari to Spotlight - SMX East 2015
PPTX
How Apple's Changing Up Search: From Siri to Safari to Spotlight - SMX East 2015
PPTX
How Apple's Changing Up Search: From Siri, to Safari to Spotlight - SMX Munic...
PDF
Search APIs & Universal Links
PPTX
SearchLove Boston 2016 | Emily Grossman | Mobile Jedi Mind Tricks: Master the...
PPTX
Mobile Jedi Mind Tricks: Master the Multi-Screen Universe
PDF
Search APIs in Spotlight and Safari
PPTX
SMX East 2015 - App Indexing - Igal Stolpner
PPTX
The Future of Deep Linking & App Indexing
PPTX
Gaming Sites Getting Mobile Friendly in a Post Mobilegeddon World -- EiG Berl...
PPTX
Eig - Gaming Sites Getting Mobile Friendly in a Post Mobilegeddon World
PDF
Mastering Mobile SEO for Your Website and Native App Content
PPTX
App Indexing for Google Search
PPTX
Apple Search and Universal Links
PDF
SearchLove London 2015 | Will Critchlow | Practical Tips for the Future of ...
PDF
eStudio34 presents London Search Love 2015 | Practical tips for the future o...
PPTX
App Indexing & Mobile SEO - Friends of Search 2016
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
How to Optimize Apps for Apple iOS Search and iOS 9 Universal Links By Emily ...
Google & Bing App Indexing - SMX Munich 2016
How Apple's Changing Up Search: From Siri to Safari to Spotlight - SMX East 2015
How Apple's Changing Up Search: From Siri to Safari to Spotlight - SMX East 2015
How Apple's Changing Up Search: From Siri, to Safari to Spotlight - SMX Munic...
Search APIs & Universal Links
SearchLove Boston 2016 | Emily Grossman | Mobile Jedi Mind Tricks: Master the...
Mobile Jedi Mind Tricks: Master the Multi-Screen Universe
Search APIs in Spotlight and Safari
SMX East 2015 - App Indexing - Igal Stolpner
The Future of Deep Linking & App Indexing
Gaming Sites Getting Mobile Friendly in a Post Mobilegeddon World -- EiG Berl...
Eig - Gaming Sites Getting Mobile Friendly in a Post Mobilegeddon World
Mastering Mobile SEO for Your Website and Native App Content
App Indexing for Google Search
Apple Search and Universal Links
SearchLove London 2015 | Will Critchlow | Practical Tips for the Future of ...
eStudio34 presents London Search Love 2015 | Practical tips for the future o...
App Indexing & Mobile SEO - Friends of Search 2016
Ad

More from Suzzicks (18)

PPTX
Fraggles & the SERP of the Future
PPTX
Life After Mobilegeddon: New Strategies for Mobile SEO and App Deep Linking -...
PDF
MozCon - Mobilegeddon
PDF
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
PPTX
Mobile Page Speed - SMX Munich 2015
PPTX
App Store Optimization - SMX Munich - Emily Grossman
PPTX
The Future of Mobile SEO - SMX Munich 2015
PPTX
Mobile SEO Geekout: Learn what to do and how to plan for mobile search
PPT
Improving your Mobile-Social Interaction - On Facebook & Other Social Networks
PPT
Super Fast - Mobile Page Speed's Impact on SEO
PPT
Mobile & Big Data
PPT
Page speedrankings
PPT
Integrating Mobile In The Marketing Mix
PPT
Improving Mobile Search Engine Listings
PPT
Mobile Search Battle
PPT
Making The Most Of Mobile
PPT
My Space Whoas & Woes
PPT
Death of the dotMobi
Fraggles & the SERP of the Future
Life After Mobilegeddon: New Strategies for Mobile SEO and App Deep Linking -...
MozCon - Mobilegeddon
The Social-Mobile Web: How to Crush Your Local Competition (Emily Grossman Ze...
Mobile Page Speed - SMX Munich 2015
App Store Optimization - SMX Munich - Emily Grossman
The Future of Mobile SEO - SMX Munich 2015
Mobile SEO Geekout: Learn what to do and how to plan for mobile search
Improving your Mobile-Social Interaction - On Facebook & Other Social Networks
Super Fast - Mobile Page Speed's Impact on SEO
Mobile & Big Data
Page speedrankings
Integrating Mobile In The Marketing Mix
Improving Mobile Search Engine Listings
Mobile Search Battle
Making The Most Of Mobile
My Space Whoas & Woes
Death of the dotMobi

Recently uploaded (20)

PDF
Biography of Brady Beitlich
PPTX
"Best Healthcare Digital Marketing Ideas
DOCX
procubiz_modern digital marketingblog.docx
PDF
Unit 1 -2 THE 4 As of RURAL MARKETING MIX.pdf
PDF
You Need SEO for Your Business. Here’s Why..pdf
PDF
Best digital marketing company in Mumbai
PPTX
UNIT 3 - 5 INDUSTRIAL PRICING.ppt x
PPTX
Ipsos+Protocols+Playbook+V1.2+(DEC2024)+final+IntClientUseOnly.pptx
PDF
Wondershare Filmora Crack Free Download 2025
PDF
Missing skill for SEO in AI Era eSkydecode.pdf
PDF
UNIT 2 - 2 AGRICULTURE MARKETING in INDIA.pdf
PDF
RC 14001 Certification: Enhancing ISO 14001 with EHS & Security Standards
PPTX
hnk joint business plan for_Rooftop_Plan
PDF
Nurpet Packaging Company Profile (Basic)
PPTX
Presentation - MindfulHeal Digital Ayurveda GTM & Marketing Plan.pptx
PDF
Instagram Marketing Agency by IIS INDIA.pdf
PPTX
B2B Marketplace India – Connect & Grow..
PPTX
Mastering eCommerce SEO: Strategies to Boost Traffic and Maximize Conversions
PPTX
Tea and different types of tea in India
PDF
Building a strong social media presence.
Biography of Brady Beitlich
"Best Healthcare Digital Marketing Ideas
procubiz_modern digital marketingblog.docx
Unit 1 -2 THE 4 As of RURAL MARKETING MIX.pdf
You Need SEO for Your Business. Here’s Why..pdf
Best digital marketing company in Mumbai
UNIT 3 - 5 INDUSTRIAL PRICING.ppt x
Ipsos+Protocols+Playbook+V1.2+(DEC2024)+final+IntClientUseOnly.pptx
Wondershare Filmora Crack Free Download 2025
Missing skill for SEO in AI Era eSkydecode.pdf
UNIT 2 - 2 AGRICULTURE MARKETING in INDIA.pdf
RC 14001 Certification: Enhancing ISO 14001 with EHS & Security Standards
hnk joint business plan for_Rooftop_Plan
Nurpet Packaging Company Profile (Basic)
Presentation - MindfulHeal Digital Ayurveda GTM & Marketing Plan.pptx
Instagram Marketing Agency by IIS INDIA.pdf
B2B Marketplace India – Connect & Grow..
Mastering eCommerce SEO: Strategies to Boost Traffic and Maximize Conversions
Tea and different types of tea in India
Building a strong social media presence.

Why Deep Linking is the Next Big Thing: App Indexing - SMX East 2015

  • 1. #SMX #23C @goutaste Emily Grossman, MobileMoxie Beyond The Web: Why App Deep Linking Is The Next Big Thing
  • 2. #SMX #23C @goutaste  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
  • 3. #SMX #23C @goutaste “Google’s mission is to organize the world’s information and make it universally accessible and useful.” - Google’s initial mission statement -
  • 6. #SMX #23C @goutaste Google App Indexing bit.ly/appindexinggoogle
  • 12. #SMX #23C @goutaste Google App Indexing: ANDROID
  • 13. #SMX #23C @goutaste Android – Intent Filters Custom URL Scheme HTTP URL Scheme Create Intent Filters:
  • 14. #SMX #23C @goutaste Android – Intent filters Intent Filters need: <action> <data> android:scheme android:path <category>
  • 15. #SMX #23C @goutaste Android App Indexing API Deep Link to previously- viewed ‘Calafia Café’ screen in the Zagat app
  • 16. #SMX #23C @goutaste Android App Indexing API ... public class MainActivity extends Activity { static final Uri APP_URI = Uri.parse("android-app://com.example.android.recipes/http/recipe- app.com/recipes"); static final Uri WEB_URL = Uri.parse("http://recipe-app.com/recipes/"); private GoogleApiClient mClient; ... } @Override public void onStop() { ... // Call end() and disconnect the client String title = "App Indexing API Title"; Action viewAction = Action.newAction(Action.TYPE_VIEW, title, WEB_URL, APP_URI); AppIndex.AppIndexApi.end(mClient, viewAction); mClient.disconnect(); ... Full code sample here: bit.ly/appindexingAPIcode
  • 17. #SMX #23C @goutaste Android – Robots.txt (Required if you don’t use the API) Update App’s Robots.txt: User-Agent: Googlebot Allow: /
  • 18. #SMX #23C @goutaste Custom URL Schemes: Web Markup
  • 19. #SMX #23C @goutaste Android Deep Link URL Format: android-app://com.travel_app/travel_app/travel-app.com/hotels/curtis-hotel-denver Protocol PackageID Scheme (custom) Host Path
  • 20. #SMX #23C @goutaste Rel=alternate XML Sitemaps Schema <head> ... <link rel="alternate" href="android- app://com.travelapp.android/http/travelapp.com/examplescreen" /> ... </head> <head> ... <link rel="alternate" href="android-app://com.travelapp.android/travelapp/examplescreen" /> <link rel="alternate" href="ios-app://123456/travelapp/examplescreen" /> ... </head>
  • 21. #SMX #23C @goutaste Rel=alternate XML Sitemaps Schema <?xml version="1.0" encoding="UTF-8" ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>http://travelwebsite.com/examplepage</loc> <xhtml:link rel="alternate" href="android-app://com.travelapp.android/travelapp/examplescreen" /> <xhtml:link rel="alternate" href="ios-app://123456/travelapp/examplescreen" /></url> <xhtml:link rel="alternate" href="android- app://com.travelapp.android/http/travelapp.com/examplescreen" /> ... </urlset>
  • 22. #SMX #23C @goutaste Rel=alternate SchemaXML Sitemaps <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebPage", "@id": "http://travelwebsite.com/examplepage", "potentialAction": { "@type": "ViewAction", "target": "android-app://com.travelapp.android/http/travelapp.com/examplescreen" } } </script>
  • 23. #SMX #23C @goutaste Android – Google Play Developer Console/ Google Search Console Sync
  • 24. #SMX #23C @goutaste Google App Indexing: iOS
  • 25. #SMX #23C @goutaste The Good News Is…
  • 26. #SMX #23C @goutaste The Bad News Is…
  • 27. #SMX #23C @goutaste iOS – Support Universal Links https://subdomain.domain.com/path/subpath/ Scheme “http” or “https” Domain or Host Name Path or Prefix Anatomy of a Universal Link:
  • 28. #SMX #23C @goutaste iOS – Support Universal Links Requirements: • A registered domain • SSL access to your domain • Ability to upload a JSON file to your domain
  • 29. #SMX #23C @goutaste iOS – Support Universal Links 1 Get Your App Ready • 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
  • 30. #SMX #23C @goutaste iOS – Support Universal Links 2 Get Your Server Ready • 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. { "applinks": { "apps": [], "details": { »ABC0123.com.domain.App": { "paths":[ "*" ] } } } }
  • 31. #SMX #23C @goutaste iOS – Support Universal Links 2 { "applinks": { "apps": [], "details": { »ABC0123.com.domain.App": { "paths":[ ”/folder/subfolder/”, ”/folder2/subfolder2/*”, ] } } } } Get Your Server Ready • 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.
  • 32. #SMX #23C @goutaste iOS – Cocoapods Support
  • 33. #SMX #23C @goutaste iOS – Cocoapods Support
  • 34. #SMX #23C @goutaste iOS – Cocoapods Support
  • 35. #SMX #23C @goutaste iOS – Cocoapods Support 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];
  • 36. #SMX #23C @goutaste Custom URL Schemes: Web Markup
  • 37. #SMX #23C @goutaste Image attribution: http://k9s4cops.org/coming-soon-the-pack/ iOS – Testing
  • 38. #SMX #23C @goutaste Apple Search App Indexing
  • 39. #SMX #23C @goutaste “Apple’s App Store commission is now at a run-rate of $9 billion, more than its total revenue in the year the iPod launched.” - Benedict Evans, @BenedictEvans -
  • 40. #SMX #23C @goutaste Apple Search SPOTLIGHT SAFARISIRI
  • 41. #SMX #23C @goutaste High-Engagement App Screens Suggested in ‘Siri Suggestions’ on iOS 9 Spotlight
  • 42. #SMX #23C @goutaste DEVICE INDEX (PRIVATE) CLOUD INDEX (PUBLIC) Apple Search Sources from Two Indexes
  • 43. #SMX #23C @goutaste APPLE SEARCH APP INDEXING CoreSpotlight NSUserActivity Web Markup
  • 44. #SMX #23C @goutaste Apple Search App Indexing Option 1: NSUserActivity
  • 45. #SMX #23C @goutaste Core Spotlight NSUserActivity Web Markup Used for… Indexing public app screens that mirror content on the web DOES require corresponding web content Add code to WEB Public Cloud Index Used for… Indexing app screens that contain private/ personal data Does NOT require corresponding web content Add code to APP Private Device Index Used for… Indexing private and public navigation points in the app Does NOT require corresponding web content Add code to APP Private Device Index and/ or Public Cloud Index Private Public
  • 46. #SMX #23C @goutaste NSUserActivity Private or Public Public Only Search results meta data for display and rankings ‘Canonical’ More info here: bit.ly/NSUserActivity
  • 47. #SMX #23C @goutaste CoreSpotlight NSUserActivity Web MarkupNSUserActivity with var eligibleForSearch with var eligibleForPublicIndexing Private/ Device Index Public/ Cloud Index PRIVATE APP SCREEN PUBLIC APP SCREEN
  • 48. #SMX #23C @goutaste Apple Search App Indexing Option 2: Core Spotlight
  • 49. #SMX #23C @goutaste Core Spotlight NSUserActivity Web Markup Used for… Indexing public app screens that mirror content on the web DOES require corresponding web content Add code to WEB Public Cloud Index Used for… Indexing app screens that contain private/ personal data Does NOT require corresponding web content Add code to APP Private Device Index Used for… Indexing private and public navigation points in the app Does NOT require corresponding web content Add code to APP Private Device Index and/ or Public Cloud Index Private Public
  • 50. #SMX #23C @goutaste CoreSpotlight Search results meta data for display and rankings More info here: bit.ly/corespotlight
  • 51. #SMX #23C @goutaste Apple Search App Indexing Option 3: Web Markup
  • 52. #SMX #23C @goutaste CoreSpotlight NSUserActivity Web MarkupNSUserActivity with var eligibleForSearch with var eligibleForPublicIndexing Private/ Device Index Public/ Cloud Index PRIVATE APP SCREEN PUBLIC APP SCREEN
  • 53. #SMX #23C @goutaste Core Spotlight NSUserActivity Web Markup Used for… Indexing public app screens that mirror content on the web DOES require corresponding web content Add code to WEB Public Cloud Index Used for… Indexing app screens that contain private/ personal data Does NOT require corresponding web content Add code to APP Private Device Index Used for… Indexing private and public navigation points in the app Does NOT require corresponding web content Add code to APP Private Device Index and/ or Public Cloud Index Private Public
  • 55. #SMX #23C @goutaste Web Markup Twitter Cards AppLinks Smart App Banners
  • 56. #SMX #23C @goutaste Web Markup Twitter Cards AppLinks Smart App Banners
  • 57. #SMX #23C @goutaste Web Markup Twitter Cards AppLinks Smart App Banners
  • 58. #SMX #23C @goutaste Web Markup – Meta Data (Schema & Open Graph)
  • 60. #SMX #23C @goutaste THANK YOU! SEE YOU @SMX WEST SAN JOSE, CA MARCH 1-3, 2016

Editor's Notes

  • #2: Although this is a template, all of the slides have been created as examples to show you what’s possible within the template. PLEASE DELETE ALL EXAMPLE SLIDES AND NOTES BEFORE CREATING OR IMPORTING YOUR OWN DECK. This template works best if you use it to create a presentation from scratch. However, this blank layout offers you flexibility to insert your own slides above the SMX footer. You must use this footer at minimum on almost all of your slides. If a screenshot overlaps the footer on occasion, that’s fine – but do your best to crop appropriately! Before you do anything else, replace “#XXa” in the footer with your session’s specific hashtag. In PowerPoint, Select VIEW>SLIDE MASTER to edit and include it on all slides of your presentation. Also add your @twitterhandle (or @companyhandle if you prefer). You can find your session specific hashtag next to its title on the online agenda: http://searchmarketingexpo.Com/advanced/agenda/ (click through to your session to see the hashtag). This template is high-resolution 16:9. Do not change it to 4:3. Also note that if you import a 4:3 presentation into 16:9 you may encounter display issues. The template uses arial & arial black as default fonts. Verdana is a secondary font that may appear. Note that older versions of PowerPoint do not have this as an option; change to arial or other standard sans-serif-font. When inserting text, please use only standard fonts. We cannot guarantee event laptops will have specialty fonts installed. Powerpoints with animations may not translate well to pdf/slideshare format – you may also submit a 2nd version / scrubbed deck more appropriate for that medium.
  • #3: Apps were initially conceived in an add-on model, where the platform of the phone that you purchased would allow you to add on functionality that you could purchase or download from a walled garden. Developers were expected to describe their apps so that users could know what they did, but the problem was that developers are not very good at writing product descriptions, and in the walled garden, there was no way to see what content was actually IN the app beyond just a few screenshots and summary text.
  • #8: There’s a lot of documentation out there on deep linking right now. My colleague Cindy Krum and I even wrote this piece on Google App Indexing for SEL last month and it was a pretty exhaustive look at what’s going on with Google app indexing and how to get your apps indexed. It was very well received…
  • #9: … even John Mueller tweeted it out! But then, at the end of the month…
  • #10: Google changed some documentation!
  • #13: So step 1 is largely the same… pick out a URL scheme.
  • #15: Defining the activity or screen that the app opens for different paths
  • #16: 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.
  • #17: Add google play services to your project, then modify activities to support the App Indexing API. ABOVE CODE IS NOT COMPLETE>DO NOT JUST COPY PASTE INTO YOUR APP>JUST FOR EXAMPLE Bonus: https://github.com/google/santa-tracker-android Google open-sourced a project that uses the App Indexing API so you (or your developers) can go snoop
  • #18: Required for Android apps if you’re not using the API. Create a new XML file, res/xml/noindex.xml, and put it in your app's XML resources directory.
  • #19: This is a requirement for custom schemes (so all iOS apps and Android apps that use custom schemes), and will still help give you more granular control if you’re using HTTP schemes and the API
  • #24: Verify website in Google Play and then log into Google Search console using Google Play account
  • #25: So step 1 is largely the same… pick out a URL scheme.
  • #26: So step 1 is largely the same… pick out a URL scheme.
  • #27: So step 1 is largely the same… pick out a URL scheme.
  • #28: The domain is securely associated with your app using an SSL cert to sign a file that is stored on your secure web server
  • #29: The domain is securely associated with your app using an SSL cert to sign a file that is stored on your secure web server *you’re sending a sitemap for your app
  • #30: NOTES: In some cases, it’s possible that the URL your app receives doesn’t represent anything in your app, or it could represent outdated or malformed content. In this case, Apple wants your app to “fail gracefully” which could mean displaying an error alert or opening the URL in Safari instead, by calling UIApplication OpenURL Entitlements: You have to prefix it with applinks: and also add any subdomains and variants that you might have (www.domain.com, news.domain.com, etc.). This will enable your app to request a special JSON file apple-app-site-association from your domain. When you first run your app it will download this file from https://domain.com/apple-app-site-association. Jump to the next step to learn how to build this file.
  • #31: You can use a wildcard so you don’t have to submit each URL one by one
  • #36: We no longer need to support cocoapods
  • #37: This is a requirement for custom schemes (so all iOS apps and Android apps that use custom schemes), and will still help give you more granular control if you’re using HTTP schemes and the API
  • #38: Verification tool is coming soon
  • #39: What does it mean when we talk about apple search and where will deep links show up if they are indexed for apple search?
  • #42: Not just in search *queries* in Spotlight, Siri, and Safari, but also in Siri Suggestions in Spotlight. Now if you’re paying attention to this slide, you may notice that there are some pretty personal results showing up here, like a calendar event and a playback on a podcast that notes it was listened to “yesterday”… Apple is able to surface these incredibly user-specific style results because…
  • #43: Apple has two indexes, a device index for private content and a public cloud index for public content. Apps can have both kinds of screens. EX. an Airbnb listing may be a public screen, while a message between a host and a guest would be a private screen. In Apple search, both of these results can surface from the same query. Users will likely never know which index their search results are coming from, but this is very important for developers and marketers to understand as we set our iOS apps up for Apple app indexing.
  • #44: There are 3 different methods for apple app indexing, and each method is a little different.
  • #47: Don’t forget to implement UIApplication delegate so this can be opened in your app later
  • #51: And again the same UIApplication delegate we used for handoff is called when the app is opened from a corespotlight search result
  • #55: Once you’ve set all of this up, you need to make sure Applebot knows your website exists. And the easiest way to do this is to include it in your Support URL or Marketing URL fields in iTunes Connect when you submit your app to the store.
  • #60: https://search.developer.apple.com/appsearch-validation-tool/ http://bit.ly/applesearchvalidator