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
App Invites for Android
Search
funnelbit
September 30, 2015
Technology
360
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
App Invites for Android
funnelbit
September 30, 2015
More Decks by funnelbit
See All by funnelbit
Hatena Engineer Seminar #9
funnelbit
5
7.5k
droidkaigi-2017-renovation
funnelbit
10
11k
Dart
funnelbit
0
310
BottomBarAndSnackBar
funnelbit
0
550
Dagger2 Optional bindings
funnelbit
0
620
WearableRecyclerView
funnelbit
1
860
QucikSettingsTileAPI
funnelbit
0
390
Mobile Vision
funnelbit
0
490
AwarenessAPI
funnelbit
0
170
Other Decks in Technology
See All in Technology
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
180
Coil3を内部実装から読み解く~キャッシュ戦略とAVIF画像の描画〜/nikkei-tech-talk50
nikkei_engineer_recruiting
0
110
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
590
Datadog で始める トークンセーフティなAI 導⼊と定着
vkbaba
1
110
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
3.2k
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
150
Azure Copilot Resiliency Agentをいろいろ試してみる
tomokusaba
0
110
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
120
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
500
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
180
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
160
「どのログを見ればいい?」 から始めた サーバーレス障害解析
y_waka1
1
150
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
890
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
550
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
The Spectacular Lies of Maps
axbom
PRO
1
1k
Utilizing Notion as your number one productivity tool
mfonobong
4
600
WCS-LA-2024
lcolladotor
0
830
The Limits of Empathy - UXLibs8
cassininazir
1
690
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Optimising Largest Contentful Paint
csswizardry
37
4k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
"QQ*OWJUFT JEGVOOFMCJU
͜Μʹͪ w JEGVOOFMCJU w ଜɹྋ w BOESPJEΞϓϦ୲
ΞϓϦͷটΛ؆୯ʹ͢Δ
"QQ*OWJUFT w (PPHMF1MBZTFSWJDFTd w J04Ͱ͑Δ w #FUB w αϯϓϧίʔυΛͱʹհ͠·͢
ྲྀΕʢট͢Δଆʣ w টը໘Λىಈ w ʮಛఆͷݸਓʯʹ&NBJMPS4.4Ͱট w ϝοηʔδը૾ΛઃఆͰ͖Δ
ྲྀΕʢট͞ΕΔଆʣ w ૹΒΕ͖ͯͨ63-Λ౿Ή w ΞϓϦ͕͋ΔͳΒ%FFQ-JOLͰىಈɺͳ͍ͳΒ 1MBZ4UPSF w ΞϓϦ͕ͳ͍߹ɺΠϯετʔϧޙʹ%FFQ-JOL ͕1MBZ4UPSF͔Β৴͞ΕΔ ϦϑΝϥʹใ͕
͍ͬͭͯ͘·͢ʣ
४උ w DPOpHVSBUJPOpMF͕ඞཁ w ඞཁͳใΛೖྗͯ͠HPPHMFTFSWJDFTKTPOΛ खʹೖΕΔ w BQQPSNPCJMFσΟϨΫτϦҎԼʹҠಈͤͯ͞ ͓͘
ট͢Δ Intent intent = new AppInviteInvitation.IntentBuilder(“title”) .setMessage(“message”) .setDeepLink(“http://example.com/…”) .setCustomImage(“http://image_url”) .setCallToActionText(“ԡͯ͠Ͷ”)
.build(); startActivityForResult(intent, REQUEST_INVITE); w "QQ*OWJUF*OWJUBUJPOͰΠϯςϯτ࡞ͬͯ͛Δ
ট͢Δ w ʮಛఆͷݸਓʯΛটͰ͖Δ
ট͢Δ w ͜ͷ࣌ɺ*OWJUBUJPO*E͕ੜ͞ΕΔ w EBDE BE⒎CD
টΛड͚Δ w 63-Λ౿Ή
টΛड͚Δ w #SPBEDBTU3FDFJWFS࡞ͬͯͪߏ͑Δ <receiver android:name="com.google.android.gms.samples.appinvite.ReferrerReceiver" android:exported="true" tools:ignore="ExportedReceiver"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER"
/> </intent-filter> </receiver>
টΛड͚Δ w #SPBEDBTU3FDFJWFS࡞ͬͯͪߏ͑Δ public class ReferrerReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) { Intent deepLinkIntent = AppInviteReferral .addPlayStoreReferrerToIntent(intent, , new Intent(“action_deep_link”)); LocalBroadcastManager .getInstance(context) .sendBroadcast(deepLinkIntent); } }
টΛड͚Δ new BroadcastReceiver() { @Override public void onReceive(Context context, Intent
intent) { if (AppInviteReferral.hasReferral(intent)) { Intent newIntent = new Intent(intent).setClass(MainActivity.this, DeepLinkActivity.class); startActivity(newIntent); // ىಈ } } };
w *OWJUBUJPO*Eͱ%FFQ-JOLΛऔಘͰ͖Δ String invitationId = AppInviteReferral.getInvitationId(intent); String deepLink = AppInviteReferral.getDeepLink(intent);
টΛड͚Δ
ॴײ w ؆୯ศར w টը໘࣮͢Δඞཁͳ͠ w αʔυύʔςΟΞϓϦʹཔΔඞཁͳ͠ w ܭଌͷΈ༻ҙͯ͘͠ΕͯΔ
ৄࡉ w IUUQTEFWFMPQFSTHPPHMFDPNBQQJOWJUFT
͋Γ͕ͱ͏͍͟͝·ͨ͠