O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

iOS & Android App Indexing & App Actions

7.736 visualizações

Publicada em

Overview of deep links and app indexing for iOS and Android apps on both Google and Bing.

Includes implementation details on setting up deep link support in mobile apps and annotating a website to expose these URIs for app indexation.

Publicada em: Celular

iOS & Android App Indexing & App Actions

  1. 1. Justin Briggs, Briggsby How to Setup App Indexing for iOS & Android
  2. 2. Justin Briggs Founder, Briggsby Justin@Briggsby.com @JustinRBriggs Say Hello!
  3. 3. Welcome to the future of search
  4. 4. Turn of the Tide Mobile Moment
  5. 5. Turn of the Tide Mobile App Moment
  6. 6. Radically changing role of search
  7. 7. Current Discovery Model App App App Content Action Content Action Content Action Search
  8. 8. New Discovery Model App App App Content Action Content Action Content Action Search
  9. 9. Deep links & app indexing are making app content accessible
  10. 10. Drive App Engagement App launch can be default behavior Clicking this launches the app!
  11. 11. This is supported by Google & Bing
  12. 12. For both iOS & Android (And Windows Phones on Bing)
  13. 13. 15% of Google searches on Android return deep links to apps through App Indexing
  14. 14. Search as an Interface Visits to app, not websites Takes action on your behalf Hands free UI (wearables) Solutions, not web pages Search examples: http://blog.tackmobile.com/article/android-wear-gui-elements/
  15. 15. Evolution of technical SEO
  16. 16. App Deep Links android-app://{package_id}/{scheme}/{host_path} ios-app://{itunes_id}/{scheme}/{host_path}  package_id - app ID in Play Store or iTunes App Store  scheme - http or custom scheme  host_path - specific content within app
  17. 17. App Indexing for Android apps (Google)
  18. 18. Intent Filter: AndroidManifest.xml Defines the structure of your app URIs <activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_title_viewgizmos"> <action android:name="android.intent.action.VIEW" /> <!-- Accepts URIs that begin with "http://example.com/gizmos” --> <data android:scheme="http" android:host="example.com" android:pathPrefix="/gizmos" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity>
  19. 19. Mange the Intent Passes the incoming Intent to a helper method ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gizmos); onNewIntent(getIntent()); }
  20. 20. Mange the Intent Verify the deep link and display the gizmos content protected void onNewIntent(Intent intent) { String action = intent.getAction(); String data = intent.getDataString(); if (Intent.ACTION_VIEW.equals(action) && data != null) { String gizmosId = data.substring(data.lastIndexOf("/") + 1); Uri contentUri = GizmosContentProvider.CONTENT_URI.buildUpon() .appendPath(gizmosId).build(); showGizmos(contentUri); }
  21. 21. App Indexing for iOS Apps (Google)
  22. 22. Custom URL Scheme in Info.plist Define {scheme} and gsd-{scheme}
  23. 23. Setup Inter-App Communication openURL: method launches the app with the registered scheme and passes your URL to it
  24. 24. Setup Google’s SDK This is required to have iOS deep links #1 Install CocaPods #2 Add GoogleAppIndexing Pod #3 Add GoogleAppIndexing post to your Xcode project #4 Update your code to use SDK and to make API call to handle back button
  25. 25. Express Interest to Google https://developers.google.com/app-indexing/ios/interest-form iOS App Indexing is a limited release
  26. 26. Keep it “First Click Free”
  27. 27. Allow the back button
  28. 28. Don’t block crawl in robots.txt
  29. 29. Test With Android Debug Bridge This will kick open “page” on mobile device from console adb shell am start -a android.intent.action.VIEW -d "http://example.com/gizmos" com.example.android
  30. 30. Test With Xcrun Tool This will kick open “page” on mobile device from console xcrun simctl openurl YOUR-DEVICE-UUID gsd- gizmos://123456/?google-deep- link=gizmos%3A%2F%2Fabcd&google-callback- url=googleapp%3A%2F%2F&google-min-sdk- version=1.0.0
  31. 31. Test In The Wild (HTML) Opens app from web page <a href="intent://example.com/gizmos#Intent;scheme=http; package=com.example.android;end;">http://example.com/gizmos</a> <a href="gsd-gizmos://123456/?google-deep- link=gizmos%3A%2F%2Fabcd&google-callback- url=googleapp%3A%2F%2F&google-min-sdk-version=1.0.0"> gizmos://abcd</a>
  32. 32. Testing Deep Links Will launch app deep link
  33. 33. Verify site with Google Play Developer Console & Webmaster Tools
  34. 34. Connect in Google Play Console Verify the app’s website
  35. 35. Annotate site for app URI discovery via crawl
  36. 36. Three Ways to Expose App URI <html> <head> ... <link rel="alternate" href="android- app://com.example.android/http/example.co m/gizmos" /> ... </head> <body> … </body> Rel=“alternate” ViewAction XML Sitemap
  37. 37. Three Ways to Expose App URI <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebPage", "@id": "http://example.com/gizmos", "potentialAction": { "@type": "ViewAction", "target": "android- app://com.example.android/http/example.co m/gizmos" } } </script> Rel=“alternate” ViewAction XML Sitemap
  38. 38. Three Ways to Expose App URI <?xml version="1.0" encoding="UTF-8" ?> <urlset xmlns="http://www.sitemaps.org/schemas/sitem ap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>http://example.com/gizmos</loc> <xhtml:link rel="alternate" href="android- app://com.example.android/example/gizmos" /> </url> ... </urlset> Rel=“alternate” ViewAction XML Sitemap
  39. 39. Very similar to a mobile separate-site setup
  40. 40. Launch App From Search
  41. 41. App indexing is now a ranking factor
  42. 42. Average Lift of 0.29 Positions 0.19 0.48 0.29 0 0.1 0.2 0.3 0.4 0.5 0.6 Rank Lift Over Desktop App Indexing Ranking Boost Mobile (Not Installed) Mobile (Installed) Net Benefit
  43. 43. No longer limited to users with installed app
  44. 44. Drive app installs by leveraging your existing SEO visibility
  45. 45. Manage indexing with robots noindex in app
  46. 46. Indexing Control for Apps <?xml version="1.0" encoding="utf-8"?> <search-engine xmlns:android="http://schemas.android.com/apk/res/android" > <noindex uri="http://example.com/gizmos/hidden_uri"/> <noindex uriPrefix="http://example.com/gizmos/hidden_prefix"/> <noindex uri="gizmos://hidden_path"/> <noindex uriPrefix="gizmos://hidden_prefix"/> </search-engine> App Resource Directory Android Manifest
  47. 47. Indexing Control for Apps <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.Gizmos"> <application> <activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_title_viewgizmos"> <action android:name="android.intent.action.VIEW"/> ... </activity> <meta-data android:name="search-engine" android:resource="@xml/noindex"/> </application> <uses-permission android:name="android.permission.INTERNET"/> </manifest> App Resource Directory Android Manifest
  48. 48. Push to Google with App Indexing API
  49. 49. Autocomplete App Suggestions
  50. 50. Only the beginning…
  51. 51. Search as an interface with app actions
  52. 52. App Actions App Indexing Knowledge Graph App Actions+ =
  53. 53. Leverage Schema.org Actions <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "MusicGroup", "name": "Weezer", "potentialAction": { "@type": "ListenAction", "target": "android-app://com.spotify.music/http/we.../listen" } } </script>
  54. 54. App Actions
  55. 55. Building an Action Graph Play the Taylor Swift song about haters Action Entity Listen Action Traditional Keyword Match
  56. 56. 55% of teens and 41% of adults use voice search more than 1 time a day - Google’s Mobile Voice Study
  57. 57. Building an Action Graph Order me a pizza? Schedule my meeting? Drive my car? Ok, Google
  58. 58. Bing Supports iOS & Android App Indexing
  59. 59. Bing’s App Indexing AppLinks.org Schema.org&
  60. 60. App Links Markup <head> <meta property="al:ios:url" content="example://?id=12345678" /> <meta property="al:ios:app_store_id" content="12345678" /> <meta property="al:android:url" content="example://?id=12345678" /> <meta property="al:android:package" content="com.example.www" /> </head>
  61. 61. Schema.org App Actions <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Book", "additionalType" : "http://www.productontology.org/id/Audiobook"> "name": "Coraline", "author" : "Neil Gaiman", "isbn" : "9781937091415", "potentialAction": { "@type": "PlayAction", "target": [ "http://www.audible.com/pd/Kids/Coraline-Audiobook/B0036GTJ48", { "@type": "EntryPoint", "urlTemplate": "audible://listennow?asin=B0036GTJ48&title=Coraline", "application": { "@type": "SoftwareApplication", "@id": "bdc813dd-c20b-41f8-8646-de72fa0b365d" "name": "Audible", "operatingSystem": "Windows Phone 8.1" } ] } } </script>
  62. 62. Thanks! hello@briggsby.com

×