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
1
420
Hello App Indexing
Otemachi.Firebase#2 2017/6/23
ymnder
June 23, 2017
Tweet
Share
More Decks by ymnder
See All by ymnder
What’s new in Google Play's billing system
ymnder
1
130
Deep Linksをはじめよう
ymnder
0
320
Introduction to Wear OS Application Development
ymnder
0
440
CircleCIを使ったAndroidの開発フローの効率化とtips
ymnder
1
1.2k
Introduction to new features of Google Play Billing
ymnder
2
280
運用から学ぶPlay Billing Library
ymnder
2
710
What’s new in Google Play Billing v1.2
ymnder
0
680
詳解定期購入
ymnder
7
6k
社内向けライブラリを設計・運用する話
ymnder
0
920
Other Decks in Programming
See All in Programming
全部見せます! クラシルリワードのSwiftTesting移行プロジェクト
uetyo
0
210
Modern Angular with the NGRX Signal Store New Rules for Your Architecture @BASTA! 2024 in Mainz
manfredsteyer
PRO
0
150
ドメイン駆動設計を実践するために必要なもの
bikisuke
4
330
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
0
120
Debugging: All you need to know (for simultaneous interpreting)
jmatsu
2
830
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
4
90k
エンジニア1年目で複雑なコードの改善に取り組んだ話
mtnmr
3
2k
unique パッケージから学ぶ interning と weak reference @ Asakusa.go#3
karamaru
2
810
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
1k
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
290
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
150
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
230
130k
Thoughts on Productivity
jonyablonski
66
4.2k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
Infographics Made Easy
chrislema
239
18k
How GitHub (no longer) Works
holman
310
140k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
5
480
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
24
610
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.6k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
27
7.4k
Visualization
eitanlees
142
15k
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