Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOSDC 20190906: 動画アプリの投げ銭機能における
消耗型課金の仕組みと実装 wi...

Takeshi Ihara
September 06, 2019

iOSDC 20190906: 動画アプリの投げ銭機能における
消耗型課金の仕組みと実装 with 発表ノート

Takeshi Ihara

September 06, 2019
Tweet

More Decks by Takeshi Ihara

Other Decks in Programming

Transcript

  1. Takeshi Ihara • 2018.09.01 AbemaTV Join • 2018.09.02 iOSDC 2018

    LT ʮখ͘͞͸͡ΊΔ୺຤؅ཧʯ • ϘϧμϦϯάͱ֨ಆήʔϜ͕झຯ • https://twitter.com/nonchalant0303 ॳΊ·ͯ͠ͷਓ͸ॳΊ·ͯ͠ɺ"CFNB57ͰJ04ΤϯδχΞͱͯ͠ಇ͍͍ͯΔҪݪַࢤͰ͢ɻ ͪΐ͏Ͳࡢ೥ͷʹ"CFNB57ʹδϣΠϯͯ͠ɺॳͷ࢓ࣄ͕ͷڈ೥ͷJ04%$ͷʮখ͘͞͸͡ΊΔ୺຤؅ཧʯͱ͍͏-5Ͱͨ͠ɻ ୀࣾͨ͠ΒϘϧμϦϯά͔֨ಆήʔϜͷͲͪΒ͔Λ໷ͳ໷ͳ΍͍ͬͯ·͢ɻ ઌ݄ʹ֨ಆήʔϜͷੈքେձʹग़ΔͨΊʹϥεϕΨε·Ͱߦ͖ͬͯ·ͨ͠ɻ ͨ·ʹ͔ٕ͠ज़తͳπΠʔτ͸͠ͳ͍Ͱ͕͢ɺझຯͷπΠʔτ͸ଟ͍ͷͰڵຯ͋Δํ͸ϑΥϩʔͯ͘͠ΕΔͱخ͍͠Ͱ͢ɻ
  2. αϙʔτػೳ (AbemaTV) • 2019.04.22
 αϙʔτػೳΛ
 ϦϦʔεʂ
 ൪૊΍൪૊ग़ԋऀʹ ελϯϓΛૹͬͯ
 αϙʔτ͕Ͱ͖Δʂ ࠓճͷλΠτϧʹؚ·Ε͍ͯΔಈըΞϓϦͷ౤͛મػೳͰ͕͢ɺࠓ೥ͷ݄ʹ"CFNB57Ͱαϙʔτػೳͱ͍͏໊শͰϦϦʔε͠·ͨ͠ɻ

    "CFNB57Ͱ์ૹ͍ͯ͠Δ൪૊΍൪૊ग़ԋऀʹελϯϓΛૹͬͯαϙʔτͰ͖ΔػೳͰ͢ɻ αϙʔτ͞Εͨελϯϓ͸൪૊ͷ੍࡞අ΍ग़ԋऀͷग़ԋྉʹ্৐ͤ͞ΕɺϢʔβʔ͕൪૊΍ग़ԋऀʹ௚઀తʹߩݙ͢Δ͜ͱ͕Ͱ͖·͢ɻ ࠓ೥ͷ݄͔Β։ൃΛ։࢝ͯ͠ϦϦʔεͩͬͨͷͱɺʹ։࠵͞Εٕͨज़ॻలʹ"CFNB57ͷJ04νʔϜͰग़లͨ͠ͷͱॏͳΓɺਖ਼௚͚ͬ͜͏Ωπ͍εέ δϡʔϧͰͨ͠ʜ
  3. 1. App಺՝ۚ 2. ՝ۚܗࣜʹΑΔҧ͍ 3. AbemaTVʹ͓͚Δফ໣ܕ՝ۚͷઃܭ 4. AbemaTVʹ͓͚Δফ໣ܕ՝ۚͷಈ࡞ݕূ 5. ·ͱΊ

    d  ࠓճͷτʔΫͰ͕͢ɺ࠷ॳʹ"QQ಺՝ۚʹ͍ͭͯܰ͘આ໌ͯ͠ɺࣗಈߋ৽αϒεΫϦϓγϣϯ΍ফ໣ܕͳͲͷ༷ʑͳ՝ۚܗࣜͷҧ͍ʹ͍ͭͯઆ໌͠·͢ɻ ͦͷҧ͍Λड͚ͯɺ"CFNB57ʹ͓͚Δফ໣ܕ՝ۚͷઃܭͷ֓ཁͱҙਤΛઆ໌͠·͢ɻ ·ͨɺ՝ۚॲཧͳͷͰϦϦʔεͨ͠ޙͷෆ۩߹͸க໋తͳ΋ͷʹͳΓಘΔͷͰɺϦϦʔεલʹͲͷΑ͏ͳಈ࡞ݕূ͔ͨ͠Λઆ໌ͯ͠ɺ࠷ޙʹ·ͱΊͯ͜ͷτʔΫ͸ऴྃʹ ͳΓ·͢ɻ
  4. App಺՝ۚͱ͸ • App ಺՝ۚͱ͸ɺiOS σόΠε΍ίϯϐϡʔλ্ͷ 
 App ͷதͰ௥Ճͷίϯςϯπ΍ఆظߪಡίϯςϯπΛ
 ߪೖͰ͖Δ࢓૊Έ https://support.apple.com/ja-jp/HT202023

    "QQMFͷެࣜυΩϡϝϯτΛࢀߟʹ͢Δͱɺ"QQ಺՝ۚͱ͸ʮJ04σόΠε΍ίϯϐϡʔλ্ͷ"QQͷதͰ௥Ճͷίϯςϯπ΍ఆظߪಡίϯςϯπΛߪೖͰ͖Δ࢓૊ ΈʯͰ͢ɻ
  5. ՝ۚܗࣜ • ফ໣ܕ (Consumable) - ΞϓϦ಺௨՟ͳͲ Ұ౓࢖͏ͱͳ͘ͳΓɺ࠶ߪೖ͢Δ͜ͱ͕Ͱ͖Δ
 • ඇফ໣ܕ (Non-Consumable)

    - ޿ࠂͷඇදࣔͳͲ Ұ౓ͷߪೖ͚ͩͰແ੍ݶʹ࢖༻Ͱ͖Δ • ࣗಈߋ৽αϒεΫϦϓγϣϯ (Auto-Renewable Subscriptions) - ֹ݄VODͳͲ ݄ؒαʔϏε΍ఆظతʹΞοϓσʔτ͞ΕͨίϯςϯπΛߪೖ͢Δ͜ͱ͕Ͱ͖Δ • ඇߋ৽αϒεΫϦϓγϣϯ (Non-Renewing Subscriptions) - γʔζϯύεͳͲ ظؒݶఆͷαʔϏε΍ίϯςϯπΛߪೖ͢Δ͜ͱ͕Ͱ͖Δ "QQ಺՝ۚ͸ফ໣ܕɺඇফ໣ܕɺࣗಈߋ৽αϒεΫϦϓγϣϯɺඇߋ৽αϒεΫϦϓγϣϯͷछྨ͕͋Γ·͢ɻ ࠓճͷςʔϚͰ͋Δফ໣ܕ͸͍ΘΏΔιγϟήͷຐ๏ੴͳͲͷΞϓϦ಺௨՟ͳͲͰ༻͍ΒΕ·͢ɻ ͜ͷ՝ۚΞΠςϜ͸Ұ౓࢖͏ͱͳ͘ͳΓɺ࠶ߪೖ͢Δ͜ͱ͕Ͱ͖·͢ɻ ඇফ໣ܕ͸޿ࠂͷඇදࣔػೳͳͲɺҰ౓ͷߪೖ͚ͩͰແ੍ݶʹ࢖༻Ͱ͖·͢ɻ ࣗಈߋ৽αϒεΫϦϓγϣϯ͸ֹ݄70%ͳͲͷఆظతʹΞοϓσʔτ͞ΕΔίϯςϯπΛߪೖ͢ΔͨΊʹ༻͍ΒΕ·͢ɻ ͪ͜ΒΛ࣮૷͍ͯ͠ΔΞϓϦ΍঺հ͍ͯ͠ΔهࣄͳͲ͕ଟ͍ͱࢥ͍·͢ɻ ඇߋ৽αϒεΫϦϓγϣϯ͸ࣗಈߋ৽αϒεΫϦϓγϣϯʹൺ΂ͯ͋·Γ༻͍ΒΕ͍ͯͳ͍ҹ৅ͳͷͰ͕͢ɺγʔζϯύεͳͲͷظؒݶఆͷαʔϏεʹ༻͍ΒΕ·͢ɻ ͜ͷΑ͏ʹαʔϏε͕ఏڙ͢Δੑ࣭ʹΑΓద੾ͳ՝ۚܗࣜΛબͿඞཁ͕͋Γ·͢ɻ
  6. AbemaTVʹ͓͚Δࣗಈߋ৽αϒεΫϦγϣϯ • ¥960/݄ͰϓϨϛΞϜػೳΛఏڙ 1. ͢΂ͯͷ࡞඼͕ݟ์୊ 2. ޿ࠂͳ͠ͰϏσΦΛ͙͢࠶ੜ 3. ์ૹதͰ΋࠷ॳ͔ΒΈΒΕΔ 4.

    μ΢ϯϩʔυͰ௨৴ྔΛ΄΅θϩʹ 5. ์ૹޙͷ൪૊Ͱ΋ίϝϯτָ͕͠ΊΔ "CFNB57Ͱ͸ͭͷ՝ۚܗࣜΛ༻͍ͯαʔϏεΛఏڙ͍ͯ͠·͢ɻ ͭ͸ࣗಈߋ৽αϒεΫϦϓγϣϯͷϓϨϛΞϜػೳͰ͢ɻ ͪ͜Β͸ֹ݄ԁͰ"CFNB57ͷ͢΂ͯͷ࡞඼͕ݟ์୊ʹͳΓɺμ΢ϯϩʔυػೳͳͲ༷ʑͳϓϨϛΞϜͳػೳΛ࢖༻͢Δ͜ͱͰ͖·͢ɻ
  7. ՝ۚܗࣜʹΑΔػೳͷҧ͍ ࠶ߪೖͷՄ൱ Ϩγʔτ΁ͷදࣔ σόΠεؒͰͷಉ ظ ෮ݩ ফ໣ܕ ˓
 Կ౓Ͱ΋ ࠶ߪೖ·Ͱ

    ಉظͳ͠ ෮ݩ͞Εͳ͍ ඇফ໣ܕ ✖ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ࣗಈߋ৽
 αϒεΫϦϓγϣ ϯ ✖
 ࣗಈతʹߋ৽͞Ε Δ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ඇߋ৽αϒεΫϦ ϓγϣϯ ˓ ߋ৽͢Δ ৗʹ "QQʹΑΓಉظ "QQʹΑΓಉظ https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Products.html#//apple_ref/doc/uid/TP40008267-CH2-SW2 https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9 ͜ͷද͸ͦΕͧΕͷ՝ۚܗࣜͷʮ࠶ߪೖͷՄ൱ʯʮϨγʔτ΁ͷදࣔʯʮσόΠεؒͰͷಉظʯʮ෮ݩʯʹ͍ͭͯهࡌ͍ͯ͠·͢ɻ Š γεςϜʹΑΓಉظˠϨγʔτΛߋ৽͢Δ͚ͩͰߪೖ৘ใΛ෮ݩͰ͖Δ 4,3FDFJQU3FGSFTI3FRVFTU  "QQʹΑΓಉظˠ׬ྃͨ͠τϥϯβΫγϣϯΛ"QQ4UPSFʹ໰͍߹ΘͤΔ SFTUPSF$PNQMFUFE5SBOTBDUJPOT
  8. ՝ۚܗࣜʹΑΔػೳͷҧ͍ ࠶ߪೖͷՄ൱ Ϩγʔτ΁ͷදࣔ σόΠεؒͰͷಉ ظ ෮ݩ ফ໣ܕ ˓
 Կ౓Ͱ΋ ࠶ߪೖ·Ͱ

    ಉظͳ͠ ෮ݩ͞Εͳ͍ ඇফ໣ܕ ✖ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ࣗಈߋ৽
 αϒεΫϦϓγϣ ϯ ✖
 ࣗಈతʹߋ৽͞Ε Δ ৗʹ γεςϜʹΑΓಉ ظ γεςϜʹΑΓಉ ظ ඇߋ৽αϒεΫϦ ϓγϣϯ ˓ ߋ৽͢Δ ৗʹ "QQʹΑΓಉظ "QQʹΑΓಉظ https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Products.html#//apple_ref/doc/uid/TP40008267-CH2-SW2 https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9 ͜͜Ͱ஫໨ͯ͠ཉ͍͠ͷ͸ফ໣ܕͷʮ࠶ߪೖͷՄ൱ʯͱʮϨγʔτ΁ͷදࣔʯͷ߲໨Ͱ͢ɻ ઌ΄Ͳઆ໌ͨ͠௨Γফ໣ܕ͸Կ౓Ͱ΋࠶ߪೖͰ͖·͢ɻ ΞϓϦ಺՝ۚ͸ߪೖͨ͠ࡍʹ"QQ4UPSF͔ΒϨγʔτ͕ൃߦ͞ΕͯɺͦͷϨγʔτʹߪೖཤྺͳͲ͕ه͞Ε͍ͯ·͢ɻ ͦͷߪೖཤྺ͕͜ͷʮϨγʔτ΁ͷදࣔʯͱ͍͏߲໨Ͱ͢ɻ ফ໣ܕͷϨγʔτ΁ͷදࣔ͸࠶ߪೖ·Ͱʹͳ͍ͬͯ·͢ɻ ͜Ε͸Ͳ͏͍͏ҙຯ͔ͱ͍͏ͱ
  9. ࠶ߪೖ͕Կ౓Ͱ΋ग़དྷΔ • ϩʔΧϧͷϨγʔτͷߪೖཤྺ্͕ॻ͖͞ΕΔ ߪೖʹԠͨ͡ΠϯηϯςΟϒΛϢʔβʔʹ෇༩Ͱ͖ͳ͘ͳΔ
 AppStoreʹΑΔ՝ۚॲཧ͸׬͍ྃͯ͠Δ → ՝͚ۚͩൃੜͯ͠ϢʔβʔʹΠϯηϯςΟϒΛ
 ෇༩͍ͯ͠ͳ͍ঢ়ଶ ফ໣ܕΛ࠶ߪೖͨ͠ࡍʹɺҎલͷߪೖཤྺ্͕ॻ͖͞ΕΔͨΊɺʮϨγʔτ΁ͷදࣔʯ͕࠶ߪೖ·Ͱͱ͍͏͜ͱʹͳΓ·͢ɻ ্ॻ͖͞Εͨߪೖཤྺ͸෮ݩ͢Δ͜ͱ͸Ͱ͖·ͤΜɻ

    ଞͷ՝ۚܗࣜ͸࠶ߪೖ͕Ͱ͖ͳ͍ͷͰɺʮϨγʔτ΁ͷදࣔʯ͕ৗʹ͞ΕΔͱ͍͏දݱʹͳ͍ͬͯ·͢ɻ ߪೖʹԠͨ͡ΠϯηϯςΟϒɺࠓճͷྫͰ͍͏ͱ"CFNBίΠϯͰ͕͢ɺίΠϯΛ෇༩͢ΔલʹϢʔβʔ͕࠶ߪೖΛͯ͠͠·͏ͱɺҎલͷߪೖཤྺ্͕ॻ͖͞ΕΔͷͰɺ ߪೖཤྺΛݟͯίΠϯΛ෇༩͢Δ͜ͱ͕Ͱ͖ͳ͘ͳΓ·͢ɻ ͔͠͠ɺ͜Ε͸"QQ4UPSFʹΑΔ՝ۚॲཧࣗମ͸׬͍ྃͯ͠ΔͷͰɺ՝͚ۚͩൃੜͯ͠ϢʔβʔʹΠϯηϯςΟϒΛ෇༩͍ͯ͠ͳ͍ঢ়ଶʹͳΓɺ͜Ε͸ΧελϚʔαϙʔ τͳͲͰΫϨʔϜ͕͘Δۓٸ౓͕ߴ͍໰͍߹ΘͤʹͳΓಘ·͢ɻ
  10. { "receipt": { …, "in_app": [ { "product_id": “com.nonchalant.consumable1”, "transaction_id":

    "1000000551439498", "purchase_date": "2019-09-01 00:00:00 Etc/GMT”, … } ] } } Ϩγʔτ (ॳճߪೖ࣌) https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1 ࢀߟ·Ͱʹ࣮ࡍͷϨγʔτΛݟͯΈ·͠ΐ͏ɻ ͪ͜Β͸ॳճߪೖ࣌ʹൃߦ͞ΕΔϨγʔτͰ͢ɻ Ϩγʔτ͸KTPOܗࣜʹͳ͍ͬͯͯɺJO@BQQͱ͍͏ϑΟʔϧυʹ͸DPNOPODIBMBOUDPOTVNBCMFͱ͍͏QSPEVDU@JEͷΞΠςϜͷߪೖཤྺ͕͚ͭͩ͋Γ·͢ɻ
  11. { "receipt": { …, "in_app": [ { "product_id": “com.nonchalant.consumable1", "transaction_id":

    "1000000556349963", "purchase_date": "2019-09-03 10:10:26 Etc/GMT”, … } ] } } Ϩγʔτ (࠶ߪೖ࣌) https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1 ͪ͜Β͸࠶ߪೖͨ͠ࡍͷϨγʔτͰ͢ɻ ॳճߪೖ࣌ͱಉ༷ʹɺJO@BQQͱ͍͏ϑΟʔϧυʹ͸DPNOPODIBMBOUDPOTVNBCMFͱ͍͏QSPEVDU@JEͷΞΠςϜͷߪೖཤྺ͕͚ͭͩ͋Γ·͢ɻ ͔͠͠ɺ͜Ε͸USBOTBDUJPO@JEͱQVSDIBTF@EBUF͕ҟͳΔผͷߪೖཤྺʹͳ͍ͬͯ·͢ɻ ͜ͷΑ͏ʹಉ͡ΞΠςϜΛ࠶ߪೖͨ͠ࡍɺҎલͷߪೖཤྺ͸্ॻ͖͞Εͯ͠·͍·͢ɻ
  12. ࠶ߪೖ͕ग़དྷΔ৚݅ • ಉ͡঎඼ͷ՝ۚτϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δ ՝ۚτϥϯβΫγϣϯ → SKPaymentTransaction τϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δ → SKPaymentQueue.finishTransaction(_:) ফ໣ܕ͸࠶ߪೖͰ͖Δͱઆ໌͠·͕ͨ͠ɺϢʔβʔ͕࠶ߪೖͰ͖ΔΑ͏ʹͳΔͨΊʹ͸৚͕݅͋Γ·͢ɻ

    ͦΕ͸ಉ͡঎඼ͷ՝ۚτϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δͱ͍͏͜ͱͰ͢ɻ ͪ͜Βͷը໘͸՝ۚτϥϯβΫγϣϯ͕ऴ͓ྃͯ͠Βͣɺ࠶ߪೖͰ͖ͳ͍ͱ͖ʹߪೖ͠Α͏ͱ͢Δͱදࣔ͞ΕΔμΠΞϩάʹͳΓ·͢ɻ ͦΕͧΕͷ༻ޠΛ۩ମతͳΫϥε΍ϝιου໊Ͱઆ໌͢Δͱɺ՝ۚτϥϯβΫγϣϯ͸4UPSF,JUʹ͓͚Δ4,1BZNFOU5SBOTBDUJPOΛࢦ͍ͯ͠·͢ɻ τϥϯβΫγϣϯ͕ऴ͍ྃͯ͠Δͱ͍͏͜ͱ͸4UPSF,JUʹ͓͚Δ4,1BZNFOU2VFVFͷpOJTI5SBOTBDUJPO͕ݺͼग़͞Ε͍ͯΔͱ͍͏͜ͱͰ͢ɻ ͪ͜Β͸Ұ౓՝ۚॲཧΛ࣮૷ͨ͜͠ͱ͕͋Δਓ͸͝ଘ஌͔ͱࢥ͍·͢ɻ
  13. ՝ۚτϥϯβΫγϣϯͷѻ͍ͷ஫ҙ఺ • ΠϯηϯςΟϒΛ෇༩͢Δ·ͰτϥϯβΫγϣϯΛऴྃͯ͠͸͍͚ͳ͍ > Once you’ve delivered the product, your

    application must call finishTransaction: to complete the transaction. When you call finishTransaction:, the transaction is removed from the payment queue. To ensure that products are not lost, your application should deliver the product before calling finishTransaction:. • ߪೖཤྺ͕Ϩγʔτʹৗʹදࣔ͞ΕΔ՝ۚܗࣜͰ͸
 ҙࣝ͠ͳͯ͘΋໰୊ͳ͍ ඇফ໣ܕɺࣗಈߋ৽αϒεΫϦϓγϣϯɺඇߋ৽αϒεΫϦϓγϣϯ https://www.rapid-ideas.com/previews/wsa/page9/files/StoreKitGuide.pdf "QQMFͷ*"1՝ۚͷ࣮૷ΨΠυΛݟͯΈΔͱɺΠϯηϯςΟϒΛ෇༩͢Δ·ͰτϥϯβΫγϣϯΛऴྃͯ͠͸͍͚ͳ͍ͱॻ͍͍ͯ·͢ɻ ʮZPVSBQQMJDBUJPOTIPVMEEFMJWFSUIFQSPEVDUCFGPSFDBMMJOHpOJTI5SBOTBDUJPOʯͷจষͰ͢Ͷɻ ຊ೔͸͜ͷจষ͚֮ͩ͑ͯ΋ΒͬͨΒ΄΅΄΅େৎ෉Ͱ͢ɻ ωοτͳͲͷ՝࣮ۚ૷ͷϒϩάͳͲΛݟͯΈΔͱɺΠϯηϯςΟϒ͕෇༩͢Δલͷ"QQ4UPSFʹ͓͚Δߪೖ͕ऴྃͨ͠λΠϛϯάͰτϥϯβΫγϣϯΛऴ͍ྃͯ͠Δ΋ͷ ͕ଟ͘ɺ͜ͷΑ͏ͳ࣮૷͸ΨΠυʹॻ͔Ε͍ͯΔ͜ͱͱ൓͍ͯ͠·͢ɻ ͨͩɺΠϯηϯςΟϒΛ෇༩͢ΔલʹτϥϯβΫγϣϯΛऴྃͯ͠΋໰୊ͳ͍έʔε͕͋Γ·͢ɻ ͦΕ͸ʮϨγʔτ΁ͷදࣔʯ͕ৗʹ͞ΕΔ՝ۚܗࣜͰ͢ɻ ͢ͳΘͪɺʮඇফ໣ܕʯʮࣗಈߋ৽αϒεΫϦϓγϣϯʯʮඇߋ৽αϒεΫϦϓγϣϯʯͷͭʹͳΓ·͢ɻ ͜ΕΒ͸Ϣʔβʔͷಈ࡞Ͱ࠶ߪೖͰ͖ͳ͍ͷͰɺͲͷλΠϛϯάͰ΋ߪೖཤྺΛਖ਼ৗʹऔಘͰ͖·͢ɻ ͜ͷΑ͏ͳ৔߹͸࣮૷ָ͕ʹͳΔέʔε΋͋ΔͷͰɺΨΠυʹ൓͠·͕͢ΠϯηϯςΟϒΛ෇༩͢ΔલʹτϥϯβΫγϣϯΛऴྃ͢Δͷ΋͋Γ͔ͱࢥ͍·͢ɻ ͔͠͠ɺফ໣ܕͰͦͷΑ͏ͳ࣮૷Λͯ͠͠·͏ͱɺαʔϏεͱͯ͠க໋తͳෆ۩߹Λ๊͑ͯ͠·͏Մೳੑ͕͋ΔͷͰ஫ҙ͕ඞཁͰ͢ɻ
  14. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ফ໣ܕ՝ۚͷߪೖϑϩʔ͸ɺΫϥΠΞϯτͷʮߪೖϦΫΤετʯ͢ͳΘͪʮτϥϯβΫγϣϯͷ։࢝ʯ͔Β࢝·ΓʮτϥϯβΫγϣϯͷऴྃʯ·ͰͷεςοϓͰߏ੒͞ Ε͍ͯ·͢ɻ
  15. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ·ͣɺϢʔβʔ͕"QQ4UPSFʹରͯ͠ফ໣ܕͷ՝ۚΞΠςϜͷߪೖϦΫΤετΛͯ͠ɺτϥϯβΫγϣϯ͕։࢝͠·͢ɻ
  16. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͦͷޙɺϢʔβʔ͕'BDF*%΍'JOHFS1SJOUɺύεϫʔυೖྗͳͲͷೝূΛߦ͍ɺೝূʹ੒ޭ͢Ε͹"QQ4UPSF͔Βߪೖ׬ྃͷϨεϙϯε͕ฦ͖ͬͯ·͢ɻ ͜ͷ࣌఺Ͱ"QQ4UPSFʹΑΔ՝ۚ͸׬͍ྃͯ͠·͢ɻ
  17. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͦͷޙɺτϥϯβΫγϣϯͷऴྃΛͤͣʹɺϩʔΧϧʹ%BUBܕͰอଘ͞Ε͍ͯΔϨγʔτΛ#BTFͰΤϯίʔυͯ͠ฐࣾͷαʔόʔʹૹ৴͠·͢ɻ
  18. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ #BTFͰΤϯίʔυ͞ΕͨϨγʔτΛड͚औͬͨαʔόʔ͸ɺͦͷϨγʔτΛ༻͍ͯ"QQ4UPSFʹݕূϦΫΤετΛ౤͛·͢ɻ
  19. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ "QQ4UPSF͸ߪೖཤྺΛؚΜͩϨγʔτݕূ݁ՌΛฐࣾͷαʔόʔʹฦ٫͠·͢ɻ
  20. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͦͷݕূ݁Ռʹج͖ͮɺϢʔβʔʹ"CFNBίΠϯΛ෇༩͠·͢ɻ
  21. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ Ϣʔβʔʹ"CFNBίΠϯͷ෇༩͕׬ྃͨ͠ͷͪɺ׬ྃϨεϙϯεΛΫϥΠΞϯτʹฦ͠·͢ɻ
  22. ফ໣ܕ՝ۚͷߪೖϑϩʔ 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 3. Ϩγʔτૹ৴ 2. ߪೖ׬ྃ ͦͷϨεϙϯεΛड͚औͬͯɺΫϥΠΞϯτ͸՝ۚτϥϯβΫγϣϯΛऴྃ͠·͢ɻ ͜Ε͕ਖ਼ৗͳফ໣ܕ՝ۚͷߪೖϑϩʔʹͳΓ·͢ɻ
  23. ՝ۚ׬ྃޙʹࣦഊ͢Δέʔε 1 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App

    Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 3. Ϩγʔτૹ৴ 2. ߪೖ׬ྃ ͔͠͠ɺ͜ͷϑϩʔʹ͸"QQ4UPSFͷ՝͕ۚ׬ྃͨ͠ޙʹࣦഊ͢Δέʔε͕ͭଘࡏ͠·͢ɻ ͭΊ͸ͷฐࣾͷαʔόʔʹϨγʔτૹ৴Λ͢ΔεςοϓʹͳΓ·͢ɻ
  24. Ϩγʔτૹ৴ʹࣦഊ͢Δέʔε • ωοτϫʔΫͳͲͷ໰୊Ͱ
 APIϦΫΤετͷ։࢝ʹࣦഊ͢Δέʔε • AppStoreʹΑΔ՝ۚ͸ൃੜ͍ͯ͠Δ • αʔόʔଆͰAbemaίΠϯ෇༩͕ग़དྷ͍ͯͳ͍ • ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍

    Ϣʔβʔ͕࠶ߪೖͰ͖ͳ͍ Ϩγʔτૹ৴ʹࣦഊ͢Δέʔε͸ɺΫϥΠΞϯτͷωοτϫʔΫ؀ڥͳͲ༷ʑͳݪҼͰ"1*ϦΫΤετͷ։࢝ʹࣦഊ͢ΔέʔεͰ͢ɻ ͪ͜Β͸લͷͱͷεςοϓͰ"QQ4UPSFʹΑΔ՝ۚ͸׬͍ྃͯ͠Δʹ΋ؔΘΒͣɺ"CFNBίΠϯ͸෇༩Ͱ͖͍ͯ·ͤΜɻ ͭ·Γ͸Ϣʔβʔ͔Β͓͚͍͍͍ۚͩͨͩͯΔͱ͍͏ঢ়ଶʹͳΓ·͢ɻ ͔͠΋ɺ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍ͷͰɺϢʔβʔ͸ಉ͡঎඼Λ࠶ߪೖ͢Δ͜ͱ΋Ͱ͖·ͤΜɻ ՝͕ۚҰ੾Ͱ͖ͳ͘ͳΓ٧Έͷঢ়ଶʹͳͬͯ͠·͍·͢ɻ
  25. ՝ۚ׬ྃޙʹࣦഊ͢Δέʔε 2 4. ϨγʔτݕূϦΫΤετ 5. Ϩγʔτݕূ݁Ռ 6. AbemaίΠϯ
 ෇༩ App

    Store AbemaTV iOS AbemaTV Server 7. ׬ྃϨεϙϯε (201) 1. ߪೖϦΫΤετ
 (τϥϯβΫγϣϯͷ։࢝) 8. τϥϯβΫγϣϯ
 ͷऴྃ 2. ߪೖ׬ྃ 3. Ϩγʔτૹ৴ ͭΊͷࣦഊ͢Δέʔε͸ͷฐࣾͷαʔόʔ͔ΒͷϨεϙϯεΛड͚औΔεςοϓʹͳΓ·͢ɻ
  26. ׬ྃϨεϙϯεʹࣦഊ͢Δέʔε • ΞϓϦͷΫϥογϡͳͲͰ
 APIϨεϙϯεͷड৴ʹࣦഊ͢Δέʔε • AppStoreʹΑΔ՝ۚ͸ൃੜ͍ͯ͠Δ • αʔόʔଆͰAbemaίΠϯ෇༩͕׬͍ྃͯ͠ΔՄೳੑ͕͋Δ • ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍

    Ϣʔβʔ͕࠶ߪೖͰ͖ͳ͍ ׬ྃϨεϙϯεͷड͚औΓʹࣦഊ͢Δέʔε͸ɺ"1*ϦΫΤετ͸։͍࢝ͯ͠·͕͢ɺϨεϙϯεΛड͚औΔલʹΞϓϦ͕Ϋϥογϡͨ͠Γɺαʔόʔ͕λΠϜΞ΢τ͠ ͨΓͳͲͷέʔεͰ͢ɻ ͪ͜Β΋ಉ༷ʹલͷͱͷεςοϓͰ"QQ4UPSFʹΑΔ՝ۚ͸׬͍ྃͯ͠Δʹ΋ؔΘΒͣɺ"CFNBίΠϯΛ෇༩Ͱ͖͍ͯͳ͍Մೳੑ͕͋Γ·͢ɻ ϦΫΤετ͸։͍࢝ͯ͠ΔͷͰɺαʔόʔଆͰ"CFNBίΠϯΛ෇༩Ͱ͖͍ͯΔՄೳੑ͸͋Γ·͕͢ɺϨεϙϯε͸ฦ͖͍ͬͯͯ·ͤΜɻ ͜Ε΋Ϣʔβʔ͔Β͓͚͍͍͍ۚͩͨͩͯΔՄೳੑ͕͋Δͱ͍͏ঢ়ଶʹͳΓ·͢ɻ ͞Βʹɺ՝ۚτϥϯβΫγϣϯ͸ऴ͍ྃͯ͠ͳ͍ͷͰɺϢʔβʔ͸ಉ͡঎඼Λ࠶ߪೖ͢Δ͜ͱ΋Ͱ͖·ͤΜɻ ͪ͜Β΋՝͕ۚҰ੾Ͱ͖ͳ͘ͳΓ٧Έͷঢ়ଶʹͳͬͯ͠·͍·͢ɻ
  27. AbemaίΠϯະ෇༩ͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ 5. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 6. ׬ྃϨεϙϯε (201) 7. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ະ׬ྃͷτϥϯβΫγϣϯ͕ଘࡏ͢Δέʔε΋छྨʹ෼ྨͰ͖ɺ"CFNBίΠϯ͕ະ෇༩͔෇༩ࡁΈͷͭͷέʔε͕͋Γ·͢ɻ ͪ͜Β͸"CFNBίΠϯ͕ະ෇༩ͷέʔεͰ͢ɻ
  28. AbemaίΠϯະ෇༩ͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ 5. AbemaίΠϯ
 ෇༩ App Store

    AbemaTV iOS AbemaTV Server 6. ׬ྃϨεϙϯε (201) 7. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ·ͣɺΫϥΠΞϯτ͸4,1BZNFOU2VFVFUSBOTBDUJPOT͔Βະ׬ྃτϥϯβΫγϣϯΛऔಘ͠ɺϨγʔτૹ৴Λ͠·͢ɻ ͦͷޙ͸ਖ਼ৗͷߪೖϑϩʔͱಉ༷ʹɺαʔόʔ͔ΒͷϨεϙϯεΛड͚औͬͨΒτϥϯβΫγϣϯΛऴྃ͠·͢ɻ ͜ΕͰɺ"CFNBίΠϯະ෇༩ͷະ׬ྃτϥϯβΫγϣϯΛਖ਼ৗʹऴྃͤ͞Δ͜ͱ͕Ͱ͖·͢ɻ
  29. AbemaίΠϯ෇༩ࡁΈͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ App Store AbemaTV iOS AbemaTV

    Server 5. AbemaίΠϯ෇༩ࡁΈΤϥʔ (409) 6. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ࣍͸"CFNBίΠϯ͸͢Ͱʹ෇༩͞Ε͍ͯ·͕͢ɺαʔόʔ͔ΒͷϨεϙϯεΛड͚औΕͣɺτϥϯβΫγϣϯ͕ະ׬ྃʹͳ͍ͬͯΔέʔεͰ͢ɻ
  30. AbemaίΠϯ෇༩ࡁΈͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ App Store AbemaTV iOS AbemaTV

    Server 5. AbemaίΠϯ෇༩ࡁΈΤϥʔ (409) 6. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) ͪ͜Β͸ઌ΄Ͳͱಉ༷ʹະ׬ྃͷτϥϯβΫγϣϯΛऔಘ͠ɺϨγʔτΛૹ৴͠·͢ɻ
  31. AbemaίΠϯ෇༩ࡁΈͷϦτϥΠ 3. ϨγʔτݕূϦΫΤετ 4. Ϩγʔτݕূ݁Ռ App Store AbemaTV iOS AbemaTV

    Server 5. AbemaίΠϯ෇༩ࡁΈΤϥʔ (409) 6. τϥϯβΫγϣϯ
 ͷऴྃ 2. Ϩγʔτૹ৴ 1. ະ׬ྃτϥϯβΫγϣϯͷऔಘ
 (SKPaymentQueue.transactions) αʔόʔ͸Ϩγʔτͷݕূޙʹͦͷߪೖཤྺʹରͯ͠"CFNBίΠϯ͸͢Ͱʹ෇༩͍ͯ͠ΔͷͰɺ"CFNBίΠϯ෇༩ࡁΈΛҙຯ͢ΔεςʔλείʔυΛฦ٫͠· ͢ɻ ΫϥΠΞϯτ͸͜ͷεςʔλείʔυΛݟͯɺτϥϯβΫγϣϯΛऴྃ͠·͢ɻ ͜ΕͰɺ"CFNBίΠϯ෇༩ࡁΈͷະ׬ྃτϥϯβΫγϣϯ΋ਖ਼ৗʹऴྃͤ͞Δ͜ͱ͕Ͱ͖·͢ɻ
  32. ϦτϥΠॲཧͷ஫ҙ఺ • ະ׬ྃτϥϯβΫγϣϯ͸SKPaymentQueue.transactionsͰ औಘͰ͖Δ ߪೖதͷτϥϯβΫγϣϯ΋ؚ·ΕΔ
 • ਖ਼ৗͳߪೖϑϩʔͷࡍ͸ϦτϥΠॲཧ
 ΛߦΘͳ͍ͳͲͷॲཧ͕ඞཁ ઌ΄Ͳະ׬ྃτϥϯβΫγϣϯ͸4,1BZNFOU2VFVFUSBOTBDUJPOTͰऔಘͰ͖Δͱઆ໌͠·͕ͨ͠ɺ͜ͷະ׬ྃτϥϯβΫγϣϯʹ͸ݱࡏߪೖதͷτϥϯβΫγϣϯ΋ ؚ·Ε·͢ɻ

    ͪ͜Β͸ࣦഊஊͳͷͰ͕͢ɺ4,1BZNFOU2VFVFUSBOTBDUJPOTʹߪೖதͷτϥϯβΫγϣϯ΋ؚ·ΕΔ͜ͱΛؾ͔ͮͣɺϦτϥΠॲཧΛ࠷ॳʹ࣮૷͠·ͨ͠ɻ "CFNB57ͷίΠϯߪೖը໘͸ίΠϯ࢒ߴ͕දࣔ͞Ε͍ͯΔͷͰɺϦτϥΠॲཧ͕ߦΘΕ·͢ɻ ͭ·Γ͸ߪೖதͷτϥϯβΫγϣϯͷϦτϥΠ΋ߦͬͯ͠·͍ɺશͯͷτϥϯβΫγϣϯͷϨγʔτૹ৴Λ࠷௿Ͱ΋ߪೖ࣌ͱߪೖ࣌ͷϦτϥΠͷճߦ͏ͱ͍͏࣮૷ʹ ͳ͍ͬͯ·ͨ͠ɻ Ϩγʔτૹ৴Λճߦ͏ͷͰɺͲͪΒ͔Ͱ"CFNBίΠϯ͕෇༩͞Εͯɺ΋͏ยํ͸෇༩ࡁΈͷΤϥʔ͕ฦ͖͍ͬͯͯ·ͨ͠ɻ ͪ͜Β͸αʔόʔଆͷϩάͰ໌Β͔ʹ"CFNBίΠϯ෇༩ࡁΈͷεςʔλείʔυ͕ى͖͍͗ͯ͢Δͱ͍͏͜ͱͰൃ֮͠·ͨ͠ɻ ಈ࡞తʹ͸க໋తͰͳ͍ͷͰ͕͢ɺແବʹαʔόʔʹෛՙΛ͔͚ͨΓϩάΛԚͯ͠͠·͏ͷͰɺਖ਼ৗͳߪೖϑϩʔͷࡍ͸ϦτϥΠॲཧΛߦΘͳ͍Α͏ʹ࣮૷͠·ͨ͠ɻ ϦτϥΠॲཧΛ࣮૷͢Δࡍ͸஫ҙ͕ඞཁͰ͢ɻ
  33. ݕূ߲໨ͷೝࣝ߹Θͤ • ߪೖϑϩʔ͕τϥϯβΫγϣϯͳͲͷ಺෦ͷঢ়ଶʹґଘͯ͠ ͍ΔͷͰɺQAνʔϜʹγʔέϯεਤΛ౉ͯ͠΋
 ݕূ߲໨Λ࡞੒͢Δͷ͕೉͍͠ • ࣮ࡍʹͲͷΑ͏ͳঢ়گͰͲͷΑ͏ͳૢ࡞Λ͢Ε͹ɺͲͷΑ͏ ͳঢ়ଶʹͳΔ͔ͷೝࣝ߹ΘͤΛ͠ͳ͍ͱ
 ݕূ߲໨Λ࡞੒Ͱ͖ͳ͍ ফ໣ܕ՝ۚͷ࣮૷͸ແࣄʹ׬ྃͨ͠ͷͰ͕͢ɺ2"νʔϜͱͷೝࣝ߹Θ͕ͤେมͰͨ͠ɻ

    ͳͥͳΒɺߪೖϑϩʔ͕τϥϯβΫγϣϯͳͲͷ಺෦ͷঢ়ଶʹґଘ͍ͯ͠ΔͷͰɺ2"νʔϜʹγʔέϯεਤΛ౉ͯ͠΋۩ମతʹͲ͏ͳΔ͔Πϝʔδ͕͖ͭͮΒ͍͔ͬͨ ͨΊͰ͢ɻ ՝ۚॲཧͱ͍͏͜ͱ΋͋Γ৻ॏʹਐΊ͔ͨͬͨͷͰɺ2"νʔϜͱαʔόʔ୲౰ऀͱࣗ෼ͷϓϥοτϑΥʔϜؒͰೝࣝ߹ΘͤΛͭͭ͠ݕূ߲໨Λ࡞੒͢Δ͜ͱʹ͠·͠ ͨɻ ͦ͜Ͱҙࣝͨ͠ͷ͸ɺ2"νʔϜ͕࣮ࡍʹͲͷΑ͏ͳঢ়گͰͲͷΑ͏ͳૢ࡞Λ͢Ε͹ͲͷΑ͏ͳঢ়ଶʹͳΔ͔ΛݴޠԽ͢Δ͜ͱͰͨ͠ɻ
  34. ߪೖϑϩʔͷಈ࡞ݕূ • ফ໣ܕ՝ۚͷߪೖϑϩʔΛ࣮૷ͨ͠αϯϓϧϓϩδΣΫτ https://github.com/Nonchalant/Consumable - Consumable In-App Purchase - Combine

    - SwiftUI Ͱ͸࣮ࡍʹαϯϓϧϓϩδΣΫτΛ༻͍ͯߪೖϑϩʔͷಈ࡞ݕূΛͯ͠Έ·͢ɻ ࠷ॳ͸͜ͷαϯϓϧϓϩδΣΫτ͸ϓϩμΫγϣϯͷํ͔Βίϐʔָͯ͠ʹ࡞Ζ͏ͱࢥ͍ͬͯͨͷͰ͕͢ɺ్தͰ๞͖ͯ͠·ͬͨͷͰɺ$PNCJOFͱ4XJGU6*Λ༻͍࣮ͯ૷ ͯ͠Έ·ͨ͠ɻ ͸ͨͯ͜͠Ε͸αϯϓϧͳͷ͔ͱ͍͏݁Ռʹͳͬͯ͠·͍·ͨ͠ɻ Ͱ͸࣮ࡍʹݟ͍͖ͯ·͠ΐ͏ɻ
  35. ֨ήʔاۀަྲྀձ • ओʹετVͰ֨ήʔاۀަྲྀձ͍ͯ͠·͢ • BizReach • CyberAgent • Cygames •

    DeNA • Microsoft • Supership • Yahoo! • ίϜγʔυ • ελʔτΞοϓςΫϊϩδʔ ौ୩ք۾ͷ*5اۀ͔Βঃʑʹ޿͕ͬͯɺओʹετϦʔτϑΝΠλʔ7ͰަྲྀձΛ͍ͯ͠·͢ɻ ΋͠ɺετϦʔτϑΝΠλʔ7Λ΍͍ͬͯͯɺڵຯ͕͋Δํ͕͍Ε͹࠙਌ձͳͲͰ࿩͔͚͍ͯͩ͘͞ʂ ަྲྀձͷதͰϛχେձͳͲ΋͋ͬͯɺΘ͍Θָ͍͠ΜͰ͍·͢ɻ