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
Androidアプリ内課金のテスト
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takuaraki
March 01, 2019
Technology
500
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Androidアプリ内課金のテスト
takuaraki
March 01, 2019
More Decks by takuaraki
See All by takuaraki
2021/02/03 発覚の COCOA Android版 不具合について
takuaraki
0
66
GASでSlackBot
takuaraki
1
580
Material Design Guideline: Dialogs, Dividers
takuaraki
0
450
Material Design Guideline: Bottom components
takuaraki
0
540
App Shortcuts
takuaraki
0
410
[関モバ#18] SQLBrite&SQLDelight
takuaraki
0
500
A/B testing GTM&GA vs Firebase
takuaraki
1
3k
【関モバ#12】Google Tag ManagerでモバイルアプリのABテストをする
takuaraki
1
690
Other Decks in Technology
See All in Technology
Omarchy Quattro の日本語設定周り
simosako
2
180
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
1.9k
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
160
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
20260912_スクラムにジェネラリストは必要か
ryugen04
0
420
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
950
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
2
2.1k
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
350
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.4k
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
23
16k
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
Balancing Empowerment & Direction
lara
6
1.3k
Faster Mobile Websites
deanohume
310
32k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
520
HDC tutorial
michielstock
2
870
Are puppies a ranking factor?
jonoalderson
2
3.9k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
ΞϓϦ՝ۚͷςετ 2019/03/01 @ara_tack
ʢߥʣ !BSB@UBDL '63:6$PSQPSBUJPO
͜ͷൃදʹ͍ͭͯ • Androidͷ՝ۚͷجૅ • ՝ۚͷಓͷΓ • ্ख͘՝͕ۚͰ͖ͳ͍ͱ͖ʁ • Play StoreΛΘͣʹಈ࡞֬ೝ
(billingx) • ৄࡉͳ՝ۚͷ࣮ʹ͍ͭͯ͞ͳ͍
AndroidΞϓϦ՝ۚ Google Play ΞϓϦͱΓऔΓ͍ͯ͠Δ (PPHMF1MBZ "QQ .Z"QQ 8SBQQFS 1MBZ#JMMJOH-JCSBSZ *O"QQ#JMMJOH"1*
ߪೖͰ͖Δͷछྨ • One-time products: 1ճ͚ͩߪೖͰ͖Δ • Subscriptions: ఆظߪೖ
One-time products • 1ճ͚ͩߪೖͰ͖Δ • ΞΠςϜػೳΛߪೖ͢Δͷʹ͍͍ͯΔ
Subscriptions • ఆظߪೖΞΠςϜ • Ұఆظؒ͝ͱʹࢧ͍͕ൃੜ͢Δ • ձһαʔϏεͳͲʹΘΕΔ
՝ۚͷಓͷΓ • Developerొ • ΞϓϦΛPlay ConsoleʹΞοϓϩʔυ͢Δ • Play ConsoleͰΞΠςϜͷొΛ͢Δ
Developerొ • GoogleΞΧϯτΛ༻ҙ͢Δ • $25͏ • Google Play Console͕͑ΔΑ͏ʹͳΔ
ΞϓϦΛPlay Consoleʹ্͛Δ • ϦϦʔεϏϧυͷΞϓϦ͕ඞཁ • ূ໌ॻϦϦʔε࣌ͷͷΛར༻ • Billingͷύʔϛογϣϯ͕ඞཁ • ެ։͕ඞཁʢΫϩʔζ൛ͰΑ͍ʣ
ΞϓϦΛPlay Consoleʹ্͛Δ ςετ༻ͷΞϓϦʹ͍ͭͯ • ΞϓϦέʔγϣϯIDূ໌ॻΛϦϦʔε༻ͱ ߹ΘͤΔ • ςετ༻ͷผΞϓϦͱͯ͠Play Consoleʹ͋ ͛ΔͷOK
ΞϓϦΛPlay Consoleʹ্͛Δ // flavorDimensionsলུ productFlavors { product { applicationId =
APPLICATION_ID_PRODUCT } billingTest { applicationId = APPLICATION_ID_PRODUCT } develop { applicationId = APPLICATION_ID_STAGING } } sourceSets { // resΛςετܥͷͷʹ͢Δ!ςετܥͷAPIΛ͑ΔΑ͏ʹ͢Δ billingTest.res.srcDirs = ["src/develop/res"] }
ͷొΛ͢Δ
ͷొΛ͢Δ • ID: มߋෆՄ • λΠτϧͱઆ໌จɿมߋՄೳ • Ձ֨ɿมߋՄೳ • ٻରظؒɿSubscriptionsͷΈɻมߋෆՄɻि
ؒɺ݄ผɺ3͔݄ɺ6͔݄ɺؒ • εςʔλεɿ༗ޮʹ͢ΔͱআͰ͖ͳ͘ͳΔ
None
ςετΞΧϯτ • Google Play ConsoleͰςετΞΧϯτ͕ొ Ͱ͖Δ • ςετΞΧϯτͰແྉͰ՝ۚͰ͖Δ • ࣮ࡍͷPlay
StoreͰͷߪೖͱѻ͍Ұॹɻߪೖ ใಉ͡ɻஈͱߪಡظ͚͕ؒͩҟͳΔɻ
ςετΞΧϯτ Subscriptions ͷߪಡظؒ https://developer.android.com/google/play/billing/billing_testing ΑΓҾ༻
ςετΞΧϯτ
্ख͘՝͕ۚͰ͖ͳ͍ͱ͖ʁ • ΞϓϦʹBillingͷύʔϛογϣϯ͕ͳ͍ • Play Consoleʹ্͕͍ͬͯͳ͍ • ΞϓϦͷূ໌ॻ͕Play Consoleʹ্͍͛ͯΔͷͱ ҟͳΔ
• ͕༗ޮʹͳ͍ͬͯͳ͍ • σϕϩούʔΞΧϯτͳͷͰ՝ۚͰ͖ͳ͍
Play StoreΛΘͣʹςετ Play StoreͷϞοΫϨεϙϯεΛఏڙ͢Δ ϥΠϒϥϦ • pixiteapps/billingx • NYTimes/Register
billingx • Play Billing LibraryΛϞοΫԽͰ͖Δ • DebugBillingClientΛBillingClientͱͯ͠͏
billingx ༻ྫʣBillingClientFactoryΛ࡞ͬͯDI͢Δ // BillingClient ͷϑΝΫτϦΛఆٛ interface BillingClientFactory { fun createBillingClient(activity:
Activity, updateListener: PurchasesUpdatedListener): BillingClient }
billingx ༻ྫʣBillingClientFactoryΛ࡞ͬͯDI͢Δ // ຊ൪༻ Play Billing Library ͷ BillingClient Λฦ͢
class ReleaseBillingClientFactory : BillingClientFactory { override fun createBillingClient(activity: Activity, updateListener: PurchasesUpdatedListener): BillingClient { return BillingClient .newBuilder(activity) .setListener(updateListener) .build() } }
billingx ༻ྫʣBillingClientFactoryΛ࡞ͬͯDI͢Δ // σόοά༻ DebugBillingClient Λฦ͢ class DebugBillingClientFactory : BillingClientFactory
{ override fun createBillingClient(activity: Activity, updateListener: PurchasesUpdatedListener): BillingClient { initializeData(activity) return DebugBillingClient(activity, updateListener) } } private fun initializeData(activity: Activity) { // ϞοΫσʔλΛ४උʢ࣍εϥΠυࢀরʣ }
billingx ༻ྫʣBillingClientFactoryΛ࡞ͬͯDI͢Δ private fun initializeData(activity: Activity) { BillingStore.defaultStore(activity) .clearProducts() .addProduct(
SkuDetailsBuilder( sku = BillingManager.SKU_SUBS, type = BillingClient.SkuType.SUBS, price = "$9.99", priceAmountMicros = 9990000, priceCurrencyCode = "USD", title = "Premium Access", description = "Get all the super cool features.", subscriptionPeriod = "p1m", freeTrialPeriod = "p1w" ).build() ) }
billingx ༻ྫʣBillingClientFactoryΛ࡞ͬͯDI͢Δ @Module class BillingClientFactoryModule { @Provides fun provideBillingClientFactory(): BillingClientFactory
{ return if (BuildConfig.DEBUG) { DebugBillingClientFactory() } else { ReleaseBillingClientFactory() } } }
·ͱΊ • ՝ۚͷͨΊʹPlay Consoleͷઃఆ͕ඞཁ • ՝ۚςετ࣌ʹϋϚΓϙΠϯτ͕ଟ͍ • Play Storeແ͠Ͱಈ࡞֬ೝ͢Δํ๏͋Δ