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
160
Deep Linksをはじめよう
ymnder
0
320
Introduction to Wear OS Application Development
ymnder
0
450
CircleCIを使ったAndroidの開発フローの効率化とtips
ymnder
1
1.2k
Introduction to new features of Google Play Billing
ymnder
2
280
運用から学ぶPlay Billing Library
ymnder
2
720
What’s new in Google Play Billing v1.2
ymnder
0
680
詳解定期購入
ymnder
7
6k
社内向けライブラリを設計・運用する話
ymnder
0
940
Other Decks in Programming
See All in Programming
Honoの来た道とこれから
yusukebe
17
2.5k
急速に利用拡大を続ける飲食店向けサービスで 店内端末同士のローカル通信を追加設定なしで実現した話
whatasoda
0
150
Amazon Neptuneで始めてみるグラフDB-OpenSearchによるグラフの全文検索-
satoshi256kbyte
3
150
Debugging: A Few Things You Should Know
jmatsu
1
140
レイトレ合宿10 レンダラー紹介 / Renderer Introduction, Ray Tracing Camp 10
shocker_0x15
0
640
CSC509 Lecture 06
javiergs
PRO
0
140
Synchronizationを支える技術
s_shimotori
1
110
4年間変わらなかった YOUTRUSTのアーキテクチャ
daiki1003
2
710
Why I Choose NetBeans for Jakarta EE
ivargrimstad
0
930
もう実家に手頃な情シス娘は不要!Bedrockでもう一人の娘を作る
komakichi
2
160
現場から考えるソフトウェアエンジニアリングの価値と実験
nomuson
1
160
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
0
320
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
31
1.4k
[RailsConf 2023] Rails as a piece of cake
palkan
49
4.8k
A Modern Web Designer's Workflow
chriscoyier
692
190k
How to Think Like a Performance Engineer
csswizardry
18
1k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
130k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Statistics for Hackers
jakevdp
796
220k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
Art, The Web, and Tiny UX
lynnandtonic
296
20k
Git: the NoSQL Database
bkeepers
PRO
425
64k
Bash Introduction
62gerente
608
210k
Faster Mobile Websites
deanohume
304
30k
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