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
350
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
300
BottomBarAndSnackBar
funnelbit
0
550
Dagger2 Optional bindings
funnelbit
0
620
WearableRecyclerView
funnelbit
1
850
QucikSettingsTileAPI
funnelbit
0
390
Mobile Vision
funnelbit
0
490
AwarenessAPI
funnelbit
0
170
Other Decks in Technology
See All in Technology
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
390
Minecraft JavaのMODをSwiftで作る
1mash0
0
160
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
1.5k
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
180
GoCon2026 - Open Source, Open World
sanposhiho
4
4.4k
Genieを崇めよ
kameitomohiro
0
120
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
120
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
5
2.2k
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
710
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
340
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
6k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
What's in a price? How to price your products and services
michaelherold
247
13k
Scaling GitHub
holman
464
140k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
The World Runs on Bad Software
bkeepers
PRO
72
12k
Are puppies a ranking factor?
jonoalderson
2
3.9k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
From π to Pie charts
rasagy
0
370
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
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
͋Γ͕ͱ͏͍͟͝·ͨ͠