Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Hello App Indexing
Search
ymnder
June 23, 2017
Programming
510
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
430
Deep Linksをはじめよう
ymnder
0
520
Introduction to Wear OS Application Development
ymnder
0
620
CircleCIを使ったAndroidの開発フローの効率化とtips
ymnder
1
1.4k
Introduction to new features of Google Play Billing
ymnder
2
370
運用から学ぶPlay Billing Library
ymnder
2
810
What’s new in Google Play Billing v1.2
ymnder
0
790
詳解定期購入
ymnder
7
6.9k
社内向けライブラリを設計・運用する話
ymnder
0
1.2k
Other Decks in Programming
See All in Programming
ALB ログから Trace を気合で繋げる技術
fohte
7
770
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.3k
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
1
2k
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
460
Deep dive into the select statement (GopherCon UK)
jespino
0
150
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
仕様駆動開発の消費期限
watany
20
9.1k
不幸な GC
chencmd
0
810
リアルな遅延を測る仕様
kota_yata
1
130
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
190
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
Faster Mobile Websites
deanohume
310
32k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Navigating Team Friction
lara
192
16k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
The Language of Interfaces
destraynor
162
27k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The Pragmatic Product Professional
lauravandoore
37
7.4k
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