Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Beyond The Web: Why App Deep Linking Is The Next Big Thing By Emily Grossman

2,077 views

Published on

From the Search Marketing Expo - SMX East Conference in New York City, NY, September 29 - October 1, 2015. SESSION: Beyond The Web: Why App Deep Linking Is The Next Big Thing. PRESENTATION: Beyond The Web: Why App Deep Linking Is The Next Big Thing - Given by Emily Grossman, @goutaste, Mobile Marketing Specialist - MobileMoxie. #SMX #23C

Published in: Mobile, Marketing
  • Be the first to comment

Beyond The Web: Why App Deep Linking Is The Next Big Thing By Emily Grossman

  1. 1. #SMX #23C @goutaste Emily Grossman, MobileMoxie Beyond The Web: Why App Deep Linking Is The Next Big Thing
  2. 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. 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 -
  4. 4. #SMX #23C @goutaste
  5. 5. #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
  6. 6. #SMX #23C @goutaste Google App Indexing bit.ly/appindexinggoogle
  7. 7. #SMX #23C @goutaste
  8. 8. #SMX #23C @goutaste
  9. 9. #SMX #23C @goutaste AUG 11 AUG 125
  10. 10. #SMX #23C @goutaste AUG 11 AUG 129
  11. 11. #SMX #23C @goutaste
  12. 12. #SMX #23C @goutaste Google App Indexing: ANDROID
  13. 13. #SMX #23C @goutaste Android – Intent Filters Custom URL Scheme HTTP URL Scheme Create Intent Filters:
  14. 14. #SMX #23C @goutaste Android – Intent filters Intent Filters need: <action> <data> android:scheme android:path <category>
  15. 15. #SMX #23C @goutaste Android App Indexing API Deep Link to previously- viewed ‘Calafia Café’ screen in the Zagat app
  16. 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. 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. 18. #SMX #23C @goutaste Custom URL Schemes: Web Markup
  19. 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. 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. 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. 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. 23. #SMX #23C @goutaste Android – Google Play Developer Console/ Google Search Console Sync
  24. 24. #SMX #23C @goutaste Google App Indexing: iOS
  25. 25. #SMX #23C @goutaste The Good News Is…
  26. 26. #SMX #23C @goutaste The Bad News Is…
  27. 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. 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. 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. 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. 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. 32. #SMX #23C @goutaste iOS – Cocoapods Support
  33. 33. #SMX #23C @goutaste iOS – Cocoapods Support
  34. 34. #SMX #23C @goutaste iOS – Cocoapods Support
  35. 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 5.  Register app pod 'GoogleAppIndexing' pod install #import <GoogleAppIndexing/GoogleAppIndexing.h> [[GSDAppIndexing sharedInstance] registerApp:your iTunes ID];
  36. 36. #SMX #23C @goutaste Custom URL Schemes: Web Markup
  37. 37. #SMX #23C @goutaste Image attribution: http://k9s4cops.org/coming-soon-the-pack/ iOS – Testing
  38. 38. #SMX #23C @goutaste Apple Search App Indexing
  39. 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. 40. #SMX #23C @goutaste Apple Search SPOTLIGHT SAFARISIRI
  41. 41. #SMX #23C @goutaste High-Engagement App Screens Suggested in ‘Siri Suggestions’ on iOS 9 Spotlight
  42. 42. #SMX #23C @goutaste DEVICE INDEX (PRIVATE) CLOUD INDEX (PUBLIC) Apple Search Sources from Two Indexes
  43. 43. #SMX #23C @goutaste APPLE SEARCH APP INDEXING CoreSpotlight NSUserActivity Web Markup
  44. 44. #SMX #23C @goutaste Apple Search App Indexing Option 1: NSUserActivity
  45. 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. 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. 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. 48. #SMX #23C @goutaste Apple Search App Indexing Option 2: Core Spotlight
  49. 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. 50. #SMX #23C @goutaste CoreSpotlight Search results meta data for display and rankings More info here: bit.ly/corespotlight
  51. 51. #SMX #23C @goutaste Apple Search App Indexing Option 3: Web Markup
  52. 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. 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
  54. 54. #SMX #23C @goutaste Web Markup
  55. 55. #SMX #23C @goutaste Web Markup Twitter Cards AppLinks Smart App Banners
  56. 56. #SMX #23C @goutaste Web Markup Twitter Cards AppLinks Smart App Banners
  57. 57. #SMX #23C @goutaste Web Markup Twitter Cards AppLinks Smart App Banners
  58. 58. #SMX #23C @goutaste Web Markup – Meta Data (Schema & Open Graph)
  59. 59. #SMX #23C @goutaste http://bit.ly/applesearchvalidator
  60. 60. #SMX #23C @goutaste THANK YOU! SEE YOU @SMX WEST SAN JOSE, CA MARCH 1-3, 2016

×