株式会社OENではFanTechソリューションプラットフォームFANBASEを提供しています。FANBASEでは,マネタイズ手段としてサブスクリプション機能を提供しており,その手法の1つであるアプリ内課金を導入しています。このセッションでは,アプリ内課金導入の背景からリリースまでの中であった躓きや実際のスケジュールなど,FANBASEでのアプリ内課金導入事例を紹介します。
ҏ౻ ྇2021 ৽ଔೖࣾגࣜձࣾOEN@ry_itto@ry-itto
View Slide
ҙ●iOSʹدͬͨͱͳΓ·͢●FlutterɼDartͷࣝΛલఏͱ͍ͯ͠ΔՕॴ͕͋Γ·͢●ΞϓϦ՝ۚΛ“IAP”ͱলུͯ͠ѻ͍·͢
1.FANBASEͱ2.ࠓճߦͬͨ͜ͱ3.࣮ࡍͷॲཧ4.ऴΘΓʹ
FANBASEͱ
FANBASEͱ●ಠࣗϓϥοτϑΥʔϜ։ઃαʔϏε●1ਓ·ͨάϧʔϓɼࣄॴ୯ҐͦΕͧΕʹ࠷దͳΦϑΟγϟϧϑΝϯίϛϡχςΟʔΞϓϦΛ։ઃ͢Δ͜ͱ͕Մೳ●ओͳػೳ●LIVE●VOD●ֹ݄αϒεΫϦϓγϣϯ
FANBASEͱ●2021/12/23 FANBASEར༻αʔϏεʮελίϛϡʯϦϦʔε●ελʔμετϓϥωοτެࣜΞϓϦ●ΞΠυϧ͕ຖ৴
FANBASEΞϓϦͰͷٕज़●iOSɾAndroidͷΞϓϦΛ࡞●FlutterΛ༻●ৄࡉɿFlutterKaigiͰͷԼهηογϣϯ●Visual Regression Testͷಋೖ
FANBASEΞϓϦͰͷٕज़●XCConfigkeystoreͳͲΛεΫϦϓτͰίϐʔ͠ɼผΞϓϦͱͯ͠ѻ͏●ԣలΛఆͨ͠ߏ●Ϣʔβʔ͚ʢUserʣ●৴ऀ͚ʢSellerʣAgoraΛ༻●User/SellerΞϓϦ
ࠓճߦͬͨ͜ͱ
֓ཁ●iOSΞϓϦͰͷࣗಈߋ৽αϒεΫϦϓγϣϯͷಋೖ●ߦͬͨ͜ͱ●2ϲ݄ʢௐࠪɼQA/QCࠐΈʣ●։ൃظؒ●ΞϓϦ 1ਓ●αʔόʔ 1ਓ●։ൃϝϯόʔ
എܠ●՝ۚಋઢΛWebͷΈͱ͠ɼReader Appͱͯ͠ϦϦʔεΛݕ౼●՝ۚϢʔβʔؔ࿈ͷهࡌΛআ্ͨ͠ͰTry●Guideline 3.1.1 - Business - Payments - In-App Purchase※Reader AppɿϢʔβʔ͕Ҏલʹߪೖͨ͠ίϯςϯπαϒεΫϦϓγϣϯʹΞΫηεͰ͖ΔΞϓϦͰɼΞϓϦʹ՝ۚػߏΛઃ͚ͳ͍
എܠ●՝ۚಋઢΛWebͷΈͱ͠ɼReader Appͱͯ͠ϦϦʔεΛݕ౼●՝ۚϢʔβʔؔ࿈ͷهࡌΛআ্ͨ͠ͰTry●Guideline 3.1.1 - Business - Payments - In-App Purchase🙅
എܠ●՝ۚ͠ͳ͍ͱ͍͚ͳ͍ػೳ͕ίϯςϯπҎ֎ʹ͋ͬͨ●ͳͥReader Appͱͯ͠ѻΘΕͳ͍ͷ͔ߟ
എܠ●՝ۚ͠ͳ͍ͱ͍͚ͳ͍ػೳ͕ίϯςϯπҎ֎ʹ͋ͬͨ ɹɹQ&AɼΞϯέʔτ͕՝ۚ͠ͳ͍ͱ͑ͳ͔ͬͨ●ͳͥReader Appͱͯ͠ѻΘΕͳ͍ͷ͔ߟ
എܠ●՝ۚ͠ͳ͍ͱ͍͚ͳ͍ػೳ͕ίϯςϯπҎ֎ʹ͋ͬͨ ɹɹQ&AɼΞϯέʔτ͕՝ۚ͠ͳ͍ͱ͑ͳ͔ͬͨ●ͳͥReader Appͱͯ͠ѻΘΕͳ͍ͷ͔ߟ͜ΕΒͷػೳΛͳ͘͢ͷαʔϏεతʹආ͚͍ͨ
എܠ●՝ۚ͠ͳ͍ͱ͍͚ͳ͍ػೳ͕ίϯςϯπҎ֎ʹ͋ͬͨ ɹɹQ&AɼΞϯέʔτ͕՝ۚ͠ͳ͍ͱ͑ͳ͔ͬͨ●ͳͥReader Appͱͯ͠ѻΘΕͳ͍ͷ͔ߟ͜ΕΒͷػೳΛͳ͘͢ͷαʔϏεతʹආ͚͍ͨiOSଆIAPͷॲཧ͕ඞཁ
εέδϡʔϦϯά●ظ͕͔ؒͬͨ͜ͱ͋ΓɼࣄલʹΧϨϯμʔ্ʹৄࡉͳεέδϡʔϧΛҾ͍ͯڞ༗ɾॱ࣍मਖ਼●ෆ໌ͳͲଞϓϩμΫτͷIAPͷ࣮ܦݧऀώΞϦϯά●ਐΊํௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●ͦͦIAPͱʁͲΜͳྲྀΕ͔●StoreKitʹ͍ͭͯ●Flutter pluginͱStoreKitͷରԠʹ͍ͭͯ●XcodeͰͷσόοάํ๏ʹ͍ͭͯ●ௐࠪʢ10/28 - 10/29ʣௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●ϓϥϯҰཡදࣔ●αϒεΫϦϓγϣϯొ●ΩϟϯηϧʢϦϯΫΛ։͘ʣ●Ծ࣮ʢ11/01 - 11/05ʣௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●CyberArrow͔ΒOEN৫౷߹●Apple/Google Developer Accountͷ࡞ɾҠߦ●৫ΞΧϯτมߋʢ11/05ʣௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●ϓϥϯҰཡදࣔ●αϒεΫϦϓγϣϯొ●෮ݩ●ΩϟϯηϧʢϦϯΫΛ։͘ʣ●ϩά●͓৮ΓձͰग़߲ͨͷमਖ਼●ຊ࣮ʢ11/05 - 11/26ʣௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●࣮ͨ͠ػೳΛνʔϜશମͰσόοά͢Δ●͓৮Γձௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●ϦϦʔεʹؒʹ߹͏Α͏ʹૣΊʹਃ●QA/QCͷमਖ਼ؒʹ߹͑ϦϦʔεʹՃ͑Δఆ●ΞϓϦਃʢ11/26ʣௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●ςετ߲ΛνΣοΫ●NG߲Λظؒʹमਖ਼●QA/QCʢ11/26 - 12/15ʣௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●QA/QCͰ্͕ͬͨNG߲Λमਖ਼●༷తʹͳ͘ͱվળͨ͠ํ͕ྑ͍Օॴͷվળ●ϒϥογϡΞοϓௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
εέδϡʔϦϯά●iOS/Androidಉ࣌ʹϦϦʔε●11/26࣌Ͱਃͨ͠ͷΛ࠷ϥΠϯͰϦϦʔε●ϦϦʔεʢ12/23ʣௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε
࣮ࡍͷεέδϡʔϧ●৫ΞΧϯτมߋ●ຊ࣮●QA/QC●༧ఆͱζϨͨՕॴௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09
࣮ࡍͷεέδϡʔϧ●ॳͷఆ ɹطʹग़͍ͯ͠ΔΞϓϦͳ͘Ҡߦͷख͕ؒͳ͍ ɹ৫ΞΧϯτ͙͢࡞ΕΔ●৫ΞΧϯτมߋௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09
࣮ࡍͷεέδϡʔϧ●࣮ࡍͷͱ͜Ζ ɹ⭕ طʹग़͍ͯ͠ΔΞϓϦͳ͘Ҡߦͷख͕ؒͳ͍ ɹ❌ ৫ΞΧϯτ͙͢࡞ΕΔ●৫ΞΧϯτมߋௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09
࣮ࡍͷεέδϡʔϧ●࣮ࡍͷͱ͜Ζ ɹ⭕ طʹग़͍ͯ͠ΔΞϓϦͳ͘Ҡߦͷख͕ؒͳ͍ ɹ❌ ৫ΞΧϯτ͙͢࡞ΕΔ●৫ΞΧϯτมߋௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09●Google Play●ࣄۀऀͷి֬ೝ͕ඞཁ
࣮ࡍͷεέδϡʔϧ●٧·ͬͨͱ͜Ζ ɹSandboxͰϓϩμΫτ͕औಘͰ͖ͳ͍ ɹαʔόʔଆͰෆ۩߹ௐࠪΛͯ͠Β͏ͷ͕େม●ຊ࣮ௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09
࣮ࡍͷεέδϡʔϧ●ຊ࣮ௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09●٧·ͬͨͱ͜Ζ ɹSandboxͰϓϩμΫτ͕औಘͰ͖ͳ͍ ɹɹˠ AppStoreConnectʹۚ༥ػؔใઃఆΛ͍ͯ͠ͳ͔ͬͨ ɹαʔόʔଆͰෆ۩߹ௐࠪΛͯ͠Β͏ͷ͕େม ɹɹˠ ಉظతͳରԠΛඞཁͱͨ͠
࣮ࡍͷεέδϡʔϧ●ॳͷఆ●QA/QCௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09TestFlightͨ͠ΞϓϦͰSandboxΞΧϯτΛͬͯςετΛͯ͠Β͏
࣮ࡍͷεέδϡʔϧ●QA/QCௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09●ى͖ͨ͜ͱSandboxΞΧϯτΛ༻͢ΔͱຖճϩάΠϯ͕ඞཁͱͳΔࣄ͕ൃੜ
࣮ࡍͷεέδϡʔϧ●QA/QCௐࠪ10/28Ծ࣮10/29ຊ࣮11/052"2$11/26 12/15ϒϥογϡΞοϓ12/23৫ΞΧϯτมߋ ΞϓϦਃ ϦϦʔε12/01 12/1311/09●ى͖ͨ͜ͱSandboxΞΧϯτΛ༻͢ΔͱຖճϩάΠϯ͕ඞཁͱͳΔࣄ͕ൃੜ●ରԠQA/QCͰ௨ৗͷApple IDΛ༻ͯ͠ςετͯ͠Β͏
࣮ࡍͷεέδϡʔϧ●ॳͷఆ௨ΓͷఔͰϦϦʔε͢Δ͜ͱ͕Ͱ͖ͨ●QA/QCΛఆΑΓૣΊʹऴྃ●݁Ռ
࣮ࡍͷεέδϡʔϧ●ॳͷఆ௨ΓͷఔͰϦϦʔε͢Δ͜ͱ͕Ͱ͖ͨ●QA/QCΛఆΑΓૣΊʹऴྃ●݁Ռ●εέδϡʔϧमਖ਼Λॱ࣍ө͍ͤͯͨ͞●࣮ɾQA/QCʹ͍ͭͯόοϑΝࠐΈͰܭը
࣮ࡍͷॲཧ
࣮ࡍͷॲཧ●ʮϓϥϯʯɿαʔϏεͷ՝ۚϓϥϯ●ʮϓϩμΫτʯɿApple IAPͷϓϩμΫτ●Flutter pluginͰ͋Δ“in_app_purchase_storekit”Λ༻͍ͯ͠·͢●લఏ
શମͷϑϩʔ1VSDIBTF4USFBN• ొॲཧ• ෮ݩॲཧ
શମͷϑϩʔʮొॲཧʯ1VSDIBTF4USFBN• ొॲཧ• ෮ݩॲཧApple IAPͷߪೖॲཧΛߦ͍ɼϢʔβʔͷ՝ۚॲཧΛͭϢʔβʔͷ՝ۚॲཧ͕ߦΘΕͨ߹ݕূॲཧΛߦ͍ɼ αʔϏεͷϓϥϯͷαϒεΫϦϓγϣϯొॲཧΛߦ͏
શମͷϑϩʔʮ෮ݩॲཧʯ1VSDIBTF4USFBN• ొॲཧ• ෮ݩॲཧApple IAPͷ෮ݩॲཧΛ࣮ߦ͢Δ෮ݩରͷαϒεΫϦϓγϣϯ͕͋ͬͨ߹ ݕূॲཧΛߦ͍αʔϏεͷαϒεΫϦϓγϣϯొΛ͢Δ ʢཪͰݩʑͷΞΧϯτͷαϒεΫϦϓγϣϯղআ͢Δʣ
αʔόʔ͔ΒϓϥϯIDΛࢦఆ͠ɼϓϥϯΛऔಘ ࢦఆ͢ΔIDڥมʹೖΕͯऔಘશମͷϑϩʔʮϓϥϯ/ϓϩμΫτऔಘʯऔಘͨ͠ϓϥϯʹඥ͍͍ͮͯΔϓϩμΫτIDͰϓϩμΫτΛऔಘ
શମͷϑϩʔʮݕূॲཧʯ1VSDIBTF4USFBN• ొॲཧ• ෮ݩॲཧ
શମͷϑϩʔνϟʔτʮݕূॲཧʯ●ʮొॲཧʯʮ෮ݩॲཧʯͰڞ௨Խ●purchased ·ͨ restored ͰྲྀΕͯ͘Δ purchaseDetails ʹೖ͍ͬͯΔϨγʔτใΛαʔόʔૹΓݕূ
࣮࣌ͷ٧·ΓϙΠϯτ●࣮தݺͼΕΔͱΛ࠶ىಈ͠ͳ͍ͱ࠶ݕূ͕Ͱ͖ͳ͍ঢ়ଶͱͳͬͯ͠·͏●finishTransactionݺͼΕ
࣮࣌ͷ٧·ΓϙΠϯτ●࣮தݺͼΕΔͱΛ࠶ىಈ͠ͳ͍ͱ࠶ݕূ͕Ͱ͖ͳ͍ঢ়ଶͱͳͬͯ͠·͏●Τϥʔɾਖ਼ৗܥ྆ํͷύλʔϯͰfinishTransactionΛݺͳ͍ͱ͍͚ͳ͍●finishTransactionݺͼΕ1VSDIBTF4USFBN
ऴΘΓʹ
ऴΘΓʹ●ࣄલʹόοϑΝΛऔ্ͬͨͰεέδϡʔϦϯά͢Δ●Δ༰͕ෆ໌ྎͳ߹
ऴΘΓʹ●ࣄલʹόοϑΝΛऔ্ͬͨͰεέδϡʔϦϯά͢Δ҆Δ༰͕Θ͔͍ͬͯΔ߹ɿఆͷ1.5ഒΔ༰͕ෆ໌ྎͳ߹ɿఆͷ2ഒ●Δ༰͕ෆ໌ྎͳ߹
ऴΘΓʹ●ࣄલʹόοϑΝΛऔ্ͬͨͰεέδϡʔϦϯά͢Δ҆Δ༰͕Θ͔͍ͬͯΔ߹ɿఆͷ1.5ഒΔ༰͕ෆ໌ྎͳ߹ɿఆͷ2ഒ●Δ༰͕ෆ໌ྎͳ߹ΫΦϦςΟͷ্ఆΑΓ৳ͼΔ
ऴΘΓʹ●͙͢ʹҾ͍͍ͯͨεέδϡʔϧΛҾ͖͢●ఆ͍ͯͨ͠ʢόοϑΝࠐΈʣΛ͑ͦ͏ͳ߹
ऴΘΓʹ●͙͢ʹҾ͍͍ͯͨεέδϡʔϧΛҾ͖͢●ఆ͍ͯͨ͠ʢόοϑΝࠐΈʣΛ͑ͦ͏ͳ߹νʔϜͷڞ༗Λ͢Δ্Ͱେࣄ࠷ऴతʹσουϥΠϯΛ͍͑ͯͳ͍͔
ऴΘΓʹ●͋Δఔ୳ͯ͠ݟ͔ͭΒͳ͍߹ɼաڈʹ࣮ͨ͠ܦݧͷ͋Δํʹฉ͘●٧·ͬͨՕॴʹؔ͢Δใ͕ݟ͔ͭΒͳ͍߹
ऴΘΓʹ●͋Δఔ୳ͯ͠ݟ͔ͭΒͳ͍߹ɼաڈʹ࣮ͨ͠ܦݧͷ͋Δํʹฉ͋͘Δఔɿௐͨ݁Ռ݅ఔ͔͠ग़ͳ͍ɾͦͦ1݅ͳ͍●٧·ͬͨՕॴʹؔ͢Δใ͕ݟ͔ͭΒͳ͍߹ωοτͰຒΕ͍ͯΔใΛΒ͑Δ͜ͱࣗʹͱͬͯͯͦ͘͠ͷਓʹͱͬͯ؆୯͔