Slide 1

Slide 1 text

ΞϓϦ಺՝ۚͷςετ 2019/03/01 @ara_tack

Slide 2

Slide 2 text

ʢߥ໦୎ʣ !BSB@UBDL '63:6$PSQPSBUJPO

Slide 3

Slide 3 text

͜ͷൃදʹ͍ͭͯ • Androidͷ՝ۚͷجૅ • ՝ۚ΁ͷಓͷΓ • ্ख͘՝͕ۚͰ͖ͳ͍ͱ͖͸ʁ • Play StoreΛ࢖Θͣʹಈ࡞֬ೝ (billingx) • ৄࡉͳ՝ۚͷ࣮૷ʹ͍ͭͯ͸࿩͞ͳ͍

Slide 4

Slide 4 text

AndroidΞϓϦ಺՝ۚ Google Play ΞϓϦͱ΍ΓऔΓ͍ͯ͠Δ (PPHMF1MBZ "QQ .Z"QQ 8SBQQFS 1MBZ#JMMJOH-JCSBSZ *O"QQ#JMMJOH"1*

Slide 5

Slide 5 text

ߪೖͰ͖Δ঎඼ͷछྨ • One-time products: 1ճ͚ͩߪೖͰ͖Δ঎඼ • Subscriptions: ఆظߪೖ

Slide 6

Slide 6 text

One-time products • 1ճ͚ͩߪೖͰ͖Δ঎඼ • ΞΠςϜ΍ػೳΛߪೖ͢Δͷʹ޲͍͍ͯΔ

Slide 7

Slide 7 text

Subscriptions • ఆظߪೖΞΠςϜ • Ұఆظؒ͝ͱʹࢧ෷͍͕ൃੜ͢Δ • ձһαʔϏεͳͲʹ࢖ΘΕΔ

Slide 8

Slide 8 text

՝ۚ΁ͷಓͷΓ • Developerొ࿥ • ΞϓϦΛPlay ConsoleʹΞοϓϩʔυ͢Δ • Play ConsoleͰΞΠςϜͷొ࿥Λ͢Δ

Slide 9

Slide 9 text

Developerొ࿥ • GoogleΞΧ΢ϯτΛ༻ҙ͢Δ • $25෷͏ • Google Play Console͕࢖͑ΔΑ͏ʹͳΔ

Slide 10

Slide 10 text

ΞϓϦΛPlay Consoleʹ্͛Δ • ϦϦʔεϏϧυͷΞϓϦ͕ඞཁ • ূ໌ॻ΋ϦϦʔε࣌ͷ΋ͷΛར༻ • Billingͷύʔϛογϣϯ͕ඞཁ • ެ։͕ඞཁʢΫϩʔζ൛Ͱ΋Α͍ʣ

Slide 11

Slide 11 text

ΞϓϦΛPlay Consoleʹ্͛Δ ςετ༻ͷΞϓϦʹ͍ͭͯ • ΞϓϦέʔγϣϯID΍ূ໌ॻΛϦϦʔε༻ͱ ߹ΘͤΔ • ςετ༻ͷผΞϓϦͱͯ͠Play Consoleʹ͋ ͛Δͷ΋OK

Slide 12

Slide 12 text

ΞϓϦΛ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"] }

Slide 13

Slide 13 text

঎඼ͷొ࿥Λ͢Δ

Slide 14

Slide 14 text

঎඼ͷొ࿥Λ͢Δ • ID: มߋෆՄ • λΠτϧͱઆ໌จɿมߋՄೳ • Ձ֨ɿมߋՄೳ • ੥ٻର৅ظؒɿSubscriptionsͷΈɻมߋෆՄɻि ؒɺ݄ผɺ3͔݄ɺ6͔݄ɺ೥ؒ • εςʔλεɿ༗ޮʹ͢Δͱ࡟আͰ͖ͳ͘ͳΔ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

ςετΞΧ΢ϯτ • Google Play ConsoleͰςετΞΧ΢ϯτ͕ొ ࿥Ͱ͖Δ • ςετΞΧ΢ϯτͰ͸ແྉͰ՝ۚͰ͖Δ • ࣮ࡍͷPlay StoreͰͷߪೖͱѻ͍͸Ұॹɻߪೖ ৘ใ΋ಉ͡ɻ஋ஈͱߪಡظ͚͕ؒͩҟͳΔɻ

Slide 17

Slide 17 text

ςετΞΧ΢ϯτ Subscriptions ͷߪಡظؒ https://developer.android.com/google/play/billing/billing_testing ΑΓҾ༻

Slide 18

Slide 18 text

ςετΞΧ΢ϯτ

Slide 19

Slide 19 text

্ख͘՝͕ۚͰ͖ͳ͍ͱ͖͸ʁ • ΞϓϦʹBillingͷύʔϛογϣϯ͕ͳ͍ • Play Consoleʹ্͕͍ͬͯͳ͍ • ΞϓϦͷূ໌ॻ͕Play Consoleʹ্͍͛ͯΔ΋ͷͱ ҟͳΔ • ঎඼͕༗ޮʹͳ͍ͬͯͳ͍ • σϕϩούʔΞΧ΢ϯτͳͷͰ՝ۚͰ͖ͳ͍

Slide 20

Slide 20 text

Play StoreΛ࢖Θͣʹςετ Play StoreͷϞοΫϨεϙϯεΛఏڙ͢Δ
 ϥΠϒϥϦ • pixiteapps/billingx • NYTimes/Register

Slide 21

Slide 21 text

billingx • Play Billing LibraryΛϞοΫԽͰ͖Δ • DebugBillingClientΛBillingClientͱͯ͠࢖͏

Slide 22

Slide 22 text

billingx ࢖༻ྫʣBillingClientFactoryΛ࡞ͬͯDI͢Δ // BillingClient ͷϑΝΫτϦΛఆٛ interface BillingClientFactory { fun createBillingClient(activity: Activity, updateListener: PurchasesUpdatedListener): BillingClient }

Slide 23

Slide 23 text

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() } }

Slide 24

Slide 24 text

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) { // ϞοΫσʔλΛ४උʢ࣍εϥΠυࢀরʣ }

Slide 25

Slide 25 text

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() ) }

Slide 26

Slide 26 text

billingx ࢖༻ྫʣBillingClientFactoryΛ࡞ͬͯDI͢Δ @Module class BillingClientFactoryModule { @Provides fun provideBillingClientFactory(): BillingClientFactory { return if (BuildConfig.DEBUG) { DebugBillingClientFactory() } else { ReleaseBillingClientFactory() } } }

Slide 27

Slide 27 text

·ͱΊ • ՝ۚͷͨΊʹPlay Consoleͷઃఆ͕ඞཁ • ՝ۚςετ࣌ʹ͸ϋϚΓϙΠϯτ͕ଟ͍ • Play Storeແ͠Ͱಈ࡞֬ೝ͢Δํ๏΋͋Δ