Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Hello App Indexing
Search
ymnder
June 23, 2017
Programming
520
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hello App Indexing
Otemachi.Firebase#2 2017/6/23
ymnder
June 23, 2017
More Decks by ymnder
See All by ymnder
What’s new in Google Play's billing system
ymnder
1
440
Deep Linksをはじめよう
ymnder
0
540
Introduction to Wear OS Application Development
ymnder
0
630
CircleCIを使ったAndroidの開発フローの効率化とtips
ymnder
1
1.5k
Introduction to new features of Google Play Billing
ymnder
2
380
運用から学ぶPlay Billing Library
ymnder
2
810
What’s new in Google Play Billing v1.2
ymnder
0
800
詳解定期購入
ymnder
7
6.9k
社内向けライブラリを設計・運用する話
ymnder
0
1.2k
Other Decks in Programming
See All in Programming
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
100
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
170
Spec-driven Development with AI
simas
PRO
0
2.2k
オーケストレーション記述言語 Katari
yukikurage
0
210
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.4k
ActionController meets Protocol Buffers
sorah
1
750
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
240
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
290
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
280
AI Augmentation Techniques with Liberty
ivargrimstad
0
170
ChromeでローカルLLM
ryu1013
0
180
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.5k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
590
How to train your dragon (web standard)
notwaldorf
96
6.9k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
Navigating Weather and Climate Data
rabernat
0
570
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
900
Exploring anti-patterns in Rails
aemeredith
4
550
Product Roadmaps are Hard
iamctodd
55
13k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
750
My Coaching Mixtape
mlcsv
0
370
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Transcript
Hello App Indexing :) 2017/6/23 Otemachi Firebase #2
whoami Ryo Yamazaki / Application Engineer twitter: @ymnd github: @ymnder
2
product: Android App 3
topics ᶃ What’s App Indexing ᶄ Hello App Indexing ᶅ
App Indexing: Pros/Cons 4
topics ᶃ What’s App Indexing ᶄ Hello App Indexing ᶅ
App Indexing: Pros/Cons 5
What’s App Indexing 6
What’s App Indexing • Google ݕࡧͱ࿈ܞͯ͠ɺϢʔβʔͷϦϐʔτΛ্ ͤ͞Δ • ChromeGoogle Search
Appͷݕࡧ݁Ռ͔ΒΞϓ ϦʹભҠͰ͖Δ • ϢʔβʔʹΠϯετʔϧޙʹ࠶Ξϓϩʔν͢Δ͜ͱ͕Ͱ ͖Δ
Where can I see it: demo
Where can I see it • Chrome • Google Search
App • Google Assistant
Why App Indexing
Why App Indexing
Why App Indexing
͔ͤͬͭͬͨ͘͘ͷʹ ͔ͭͬͯΒ͑ͳ͍
ΞϓϦʹ࠶๚ͯ͠ཉ͍͠ʂʂ
App Indexing
Who is the target • ΞϓϦΛΠϯετʔϧ͚ͨ͠ͲɺΘͳ͘ͳͬͯ͠·ͬ ͨϢʔβʔɿre-engage • ࠓ͍ͬͯΔϢʔβʔɿmore-engage •
(ΞϓϦΛΠϯετʔϧ͍ͯ͠ͳ͍Ϣʔβʔ)
How effective is that? Case study: g.co/AppIndexing
Which device does it work? • ChromeΛΠϯετʔϧ͍ͯ͠Δ • API 14Ҏ্Ͱಈ͘͜ͱΛ֬ೝࡁΈ
• Search AppΛΠϯετʔϧ͍ͯ͠Δ • ҙɿAPI 16Ҏ্Ͱͳ͍ͱΠϯετʔϧͰ͖ͳ͍ • Google Assistant͕͑Δ • API 23Ҏ্Ͱ͑ΔΑ͏ʹͳͬͨ
topics ᶃ What’s App Indexing ᶄ Hello App Indexing ᶅ
App Indexing: Pros/Cons 19
Hello App Indexing :) • App Indexing • WebαΠτʹΞϓϦͷdeeplinkΛઃஔ •
αΠτΛ։͍ͨͱ͖ʹΞϓϦ͕։͘ • App Indexing API • ΦʔτίϯϓϦʔτ • Google Search Appͷݕࡧ݁ՌʹաڈӾཡͨ͠Ξϓ Ϧͷϖʔδ͕දࣔ͞ΕΔ • ΩʔϫʔυͰΞϓϦͷϖʔδΛҾֻ͚ͬΒΕΔ
Hello App Indexing :) • App Indexing • WebαΠτʹΞϓϦͷdeeplinkΛઃஔ •
αΠτΛ։͍ͨͱ͖ʹΞϓϦ͕։͘ • App Indexing API • ΦʔτίϯϓϦʔτ • Google Search Appͷݕࡧ݁ՌʹաڈӾཡͨ͠Ξϓ Ϧͷϖʔδ͕දࣔ͞ΕΔ • ΩʔϫʔυͰΞϓϦͷϖʔδΛҾֻ͚ͬΒΕΔ
Hello App Indexing :)
Hello App Indexing :) • App Indexing • WebαΠτʹΞϓϦͷdeeplinkΛઃஔ •
αΠτΛ։͍ͨͱ͖ʹΞϓϦ͕։͘ • App Indexing API • ΦʔτίϯϓϦʔτ • Google Search Appͷݕࡧ݁ՌʹաڈӾཡͨ͠Ξϓ Ϧͷϖʔδ͕දࣔ͞ΕΔ • ΩʔϫʔυͰΞϓϦͷϖʔδΛҾֻ͚ͬΒΕΔ
Hello App Indexing API :)
App Indexing
Hello App Indexing :) • Δ͜ͱͨͬͨ̏ͭ ᶃαΠτʹΞϓϦΛඥ͚Δ ᶄϝλλάΛαΠτʹࠐΉ ᶅΞϓϦʹDeeplinkΛಡΈࠐΉ࣮Λ͍ΕΔ
How to connect with your site: web side • HTTPSͷ߹
& Android SDK Platform 23 or higher • Digital Assets Links • https://<yoursite>/.well-known/assetlinks.json
How to connect with your site: web side • HTTPͷ߹
• Search ConsoleͰWebͱΞϓϦΛඥ͚Δ • WebͱAppΛҧ͏ΞΧϯτͰཧͯͯ͠େৎ
Play Console
How to connect with your site: web side • αΠτʹmetaλάΛՃ͢Δ
• custom URLඇਪ͕ͩ͑Δ package_id scheme host
How to connect with your site: app side
How to connect with your site: app side
How to connect with your site: app side
How to connect with your site: app side https://developer.android.com/guide/topics/manifest/data-element.html
How to connect with your site: app side @Override protected
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recipe); onNewIntent(getIntent()); } protected void onNewIntent(Intent intent) { String action = intent.getAction(); String data = intent.getDataString(); if (Intent.ACTION_VIEW.equals(action) && data != null) { //write wonderful codes… } }
How to connect with your site: app side @Override protected
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recipe); onNewIntent(getIntent()); } protected void onNewIntent(Intent intent) { String action = intent.getAction(); String data = intent.getDataString(); if (Intent.ACTION_VIEW.equals(action) && data != null) { //write wonderful codes… } }
How to connect with your site: app side @Override protected
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recipe); onNewIntent(getIntent()); } protected void onNewIntent(Intent intent) { String action = intent.getAction(); String data = intent.getDataString(); if (Intent.ACTION_VIEW.equals(action) && data != null) { //write wonderful codes… } }
How do I test app indexing • manifestͷهड़͕߹͍ͬͯΔ͔ • Android
StudioɿAnalyze -> Inspect Code • intentਖ਼͘͠௨Δ͔ • adb shell am start -a android.intent.action.VIEW -d "{URL}" {package name} • WebʹmetaλάࠐΜͩͷʹಈ͔ͳ͍ • Google searchͷfetch as googleͰ࠶Ϋϩʔϧ • ͔ͯ͠͠ɺඥ͍ͯͳ͍ϦϯΫΛ։͍ͯΔʁ
Fetch as Google
Check Before Launch • First Click Free • ΫϦοΫͨ͠ઌͦͷ··ίϯςϯπΛݟΒΕΔΑ ͏ʹ
• BackButton • ̍ͭલͷεΫϦʔϯʹΔΑ͏ʹ͖͢
App Indexing API
App Indexing API is updated…….. • 10.0.0͔ΒAPI͕େ͖͘มߋ͞Εͨ • codelabs •
ҙ • ຊޠͷget started ߋ৽͞Εͯͳ͍ • https://firebase.google.com/docs/app-indexing/ android/migrate
App Indexing API is updated……. • GoogleApiClientΛΘͳ͘ͳͬͨ • ΦʔτίϯϓϦʔτʹ͏ϢʔβʔΞΫγϣϯͷϏϧυ Ϋϥε͕γϯϓϧʹͳͬͨ
• ϢʔβʔΞΫγϣϯͷߋ৽ํ๏͕มΘͬͨ • ΠϯσοΫεʹΞΫγϣϯ͕Ճ͞Ε͍ͯΔ͜ͱΛ֬ ೝ͔ͯ͠ΒΞοϓσʔτΛߦ͏
App Indexing API is updated…… // Before import com.google.android.gms.appindexing.Action; import
com.google.android.gms.appindexing.AppIndex; import com.google.android.gms.common.api.GoogleApiClient; // After import com.google.firebase.appindexing.Action; import com.google.firebase.appindexing.FirebaseUserActions; import com.google.firebase.appindexing.Indexable; import com.google.firebase.appindexing.builders.Actions;
App Indexing API is updated….. // Before import com.google.android.gms.appindexing.Action; import
com.google.android.gms.appindexing.AppIndex; import com.google.android.gms.common.api.GoogleApiClient; // After import com.google.firebase.appindexing.Action; import com.google.firebase.appindexing.FirebaseUserActions; import com.google.firebase.appindexing.Indexable; import com.google.firebase.appindexing.builders.Actions;
App Indexing API is updated…. //Before public Action getAction() {
Thing object = new Thing.Builder() .setName(mText) .setUrl(mUrl) .build(); return new Action.Builder(Action.TYPE_VIEW) .setObject(object) .build(); } // After public Action getAction() { return Actions.newView(mText, mUrl); }
App Indexing API is updated… //Before public Action getAction() {
Thing object = new Thing.Builder() .setName(mText) .setUrl(mUrl) .build(); return new Action.Builder(Action.TYPE_VIEW) .setObject(object) .build(); } // After public Action getAction() { return Actions.newView(mText, mUrl); }
App Indexing API is updated.. //Before @Override protected void onStart()
{ super.onStart(); mClient.connect(); AppIndex.AppIndexApi.start(mClient, getAction()); } @Override protected void onStop() { AppIndex.AppIndexApi.end(mClient, getAction()); mClient.disconnect(); super.onStop(); }
App Indexing API is updated. // After @Override protected void
onStart() { super.onStart(); FirebaseAppIndex.getInstance().update(getIndexable()); FirebaseUserActions.getInstance().start(getAction()); } @Override protected void onStop() { FirebaseUserActions.getInstance().end(getAction()); super.onStop(); }
Codelabs • https://codelabs.developers.google.com/codelabs/app-indexing/#0
topics ᶃ What’s App Indexing ᶄ Hello App Indexing ᶅ
App Indexing: Pros/Cons 51
App Indexing: Pros • ΞϓϦͷ࠶๚ͷػձ͕૿ͤΔ • Google AssistantͰߋʹ৮ػձ͕૿͑ΔՄೳੑ͕ʁ • ΞϓϦΛͬͯΒ͏ػձ૿ͤΔ
• ΞϓϦͰ࠷ߴͷମݧΛ
App Indexing: Pros • ϞόΠϧͷݕࡧϥϯΩϯάΞϧΰϦζϜʹӨڹ • ܭଌͷڧԽ • ϞόΠϧαΠτ๚ऀͷΞϓϦΠϯετʔϧਪܭ •
SearchConsole
App Indexing: Cons • ΞϓϦΛΠϯετʔϧͯ͠ͳ͍ͱભҠ͠ͳ͍ • re-engageࢪࡦ • fallbackͳ͍ •
Πϯετʔϧಋઢ૿͑Δ͚Ͳɾɾɾ • Կނ͔ΞϓϦ͕։͔ͳ͍߹͕͋Δ • өʹϥά͕͋Δ
App Indexing: Cons • ChromeʗSearchAppҎ֎ͰӾཡͨ͠߹ભҠ͠ͳ͍ • twitter: App Card, facebook:
App Links
Grow App with App Indexing
͓ΘΓ
References http://qiita.com/mmusasabi/items/fd35037aecc1772dd11b http://qiita.com/nein37/items/3b69f85b97d0883eb1ca http://inside.pixiv.net/entry/2014/12/15/152113 http://stpsysdev.blogspot.jp/2016/02/androidappindexing.html https://www.youtube.com/watch?v=CwgWOHgHHJE https://www.youtube.com/watch?v=pl1-m8tJDmQ http://thebridge.jp/2015/11/what-is-appindexing https://realm.io/news/juan-gomez-android-app-indexing/ http://www.slideshare.net/wjarek/an-introduction-to-deep-linking-and-app-indexing-codelab
http://stackoverflow.com/questions/31512465/app-indexing-with-ampersand-in-deep-link-not-working https://productforums.google.com/forum/#!topic/webmaster-ja/HdEAWX-YbsE;context-place=topicsearchin/ webmaster-ja/category$3Aapp-indexing%7Csort:relevance%7Cspell:false
References • First Click Free • https://support.google.com/news/publisher/answer/ 40543?hl=ja • https://productforums.google.com/forum/#!topic/
webmaster-ja/TRvgIx3Sr2k;context- place=topicsearchin/webmaster-ja/category$3Aapp- indexing • BackButton • https://webmasters.googleblog.com/2014/04/app- indexing-updates.html