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

20分間で振り返るIn-App Purchaseの歴史

inokinn
September 11, 2022

20分間で振り返るIn-App Purchaseの歴史

iOSにおけるIn-App Purchase(アプリ内課金)はiOS 3から利用可能であり、その歴史は10年以上に及びます。
この長い歴史の中で、Ask to BuyやUpgrade / Downgrade、お試しオファーなどの多くの仕組みが追加され、やれることが格段に増えました。
アプリ内課金をサポートするための仕組みも、Store Kit 2による実装方法の変更やアプリ内での返金機能をはじめ、Server NotificationsやTransaction Receiptのフォーマットの変更など、新しいものが次々にリリースされたり、StoreKit Testingによって自動テストが出来たりSandbox環境がアップデートされたりなど、課金のテストにまつわる状況も大きく変わりました。
本トークでは、20分間でIn-App Purchaseの激動の歴史をじっくり振り返っていきます。

inokinn

September 11, 2022
Tweet

Other Decks in Programming

Transcript

  1. ˜;0;0 *OD גࣜձࣾ;0;0 ;0;0508/։ൃຊ෦;0;0508/ΞϓϦ෦J04ϒϩοΫ Ҫ্ெ໵!JOPLJOO • 5XJUUFS!JOPLJOO • ೥݄ʹ;0;0ʹத్ೖࣾ •

    ීஈ͸;0;0508/ͷJ04ΞϓϦ։ൃ͍ͯ͠·͢ • *O"QQ1VSDIBTFͱ͸աڈʹ௕͍͓෇͖߹͍Λ 
 ͍ͯ͠·ͨ͠ 2
  2. ˜;0;0 *OD *O"QQ1VSDIBTFͱ͸ʁ • ΞϓϦ಺՝ۚͷ͜ͱ • 4UPSF,JU͸J1IPOF4%,Ͱ௥Ճ͞Εɺ໿೥ͷྺ࢙Λ࣋ͭ • J04Ͱ͸ɺ༗ྉͷσδλϧίϯςϯπͷఏڙ΍αϒεΫϦϓγϣϯΛ 


    ࣮ݱ͢Δʹ͸ɺ4UPSF,JUGSBNFXPSLΛ༻͍࣮ͯ૷͢Δඞཁ͕͋Δ ◦ ͜Εʹ͍ͭͯͷᎍΊࣄͷ࿩୊͸ຕڍʹՋ͕ͳ͍͕ɺࠓճ͸ޠΓ·ͤΜ 7
  3. ˜;0;0 *OD ঎඼ͷͭͷλΠϓ • $POTVNBCMF ফ໣ܕ  ◦ FHιγϟήͷΨνϟੴͳͲ •

    /PO$POTVNBCMF ඇফ໣ܕ  ◦ FHػೳͷΞϯϩοΫͳͲ • "VUP3FOFXBCMF4VCTDSJQUJPO ࣗಈߋ৽ߪಡ  ◦ FHαʔϏεͷֹ݄ձһɺ৽ฉ΍ࡶࢽͷߪಡͳͲ • /PO3FOFXJOH4VCTDSJQUJPO ඇࣗಈߋ৽ߪಡ  ◦ FHήʔϜͷγʔζϯύεͳͲ 8
  4. ˜;0;0 *OD *O"QQ1VSDIBTFͬ͘͟Γ೥ද • ೥ ◦ 4UPSF,JU஀ੜ • ೥ ◦

    ࣗಈߋ৽ߪಡɺແྉߪಡ௥Ճ • ೥ ◦ 4,%PXOMPBE௥Ճ ◦ 4,4UPSF1SPEVDU7JFX$POUSPMMFS௥Ճ • ೥ ◦ ϨγʔτͷϑΥʔϚοτมߋ • ೥ ◦ "TLUP#VZ௥Ճ • ೥ ◦ ΞοϓάϨʔυμ΢ϯάϨʔυ 
 ΫϩεάϨʔυ௥Ճ ◦ ແྉߪಡফ͑Δ • ೥ ◦ "QQ಺՝ۚͷϓϩϞʔγϣϯ௥Ճ ◦ 4FSWFS/PUJGJDBUJPO௥Ճ ◦ 4,4UPSF3FWJFX$POUSPMMFS௥Ճ ◦ ͓ࢼ͠ΦϑΝʔ௥Ճ 9 • ೥ ◦ 4,"E/FUXPSL௥Ճ ◦ ୺຤ઃఆͰ4BOECPYΞΧ΢ϯτ͕ಠཱ ◦ ࢧ෷͍༛༧ظؒ௥Ճ • ೥ ◦ ϓϩϞʔγϣϯΦϑΝʔ௥Ճ • ೥ ◦ 3FGVOE/PUJGJDBUJPO௥Ճ ◦ 4FSWFS/PUJGJDBUJPOʹߪಡͷߋ৽΍ฦۚ௨஌௥Ճ ◦ ϑΝϛϦʔڞ༗ରԠ ◦ ஋্͛ʹؔ͢ΔՁ֨ಉҙγʔτ௥Ճ ◦ ΦϑΝʔίʔυ௥Ճ ◦ 4,0WFSMBZ௥Ճ ◦ 4UPSF,JU5FTUJOHJO9DPEF௥Ճ • ೥ ◦ 4UPSF,JUϦϦʔε ◦ 4VCTDSJQUJPO"1*௥Ճ ◦ *O"QQ1VSDIBTF)JTUPSZ"1*௥Ճ ◦ 4FSWFS/PUJGJDBUJPO7௥Ճ • ೥ ◦ "QQ5SBOTBDUJPO௥ՃͳͲ
  5. ˜;0;0 *OD 4FSWFS/PUJGJDBUJPOT  • Ϣʔβͷఆظߪಡͷঢ়ଶʹมԽ͕͋ͬͨࡍʹ௨஌ͯ͘͠ΕΔ࢓૊Έ ◦ ೥͔Βɺߪಡͷߋ৽੒ޭ΍ΦϑΝʔਃ੥ʹ͍ͭͯ΋ 
 ௨஌͞ΕΔΑ͏ʹͳͬͨ

    ◦ ೥͔Βɺຊ൪ͱ4BOECPYͰ௨஌ͷΤϯυϙΠϯτΛ 
 ෼͚ΒΕΔΑ͏ʹͳͬͨ ◦ ೥͔Βɺ4FSWFS/PUJGJDBUJPOT7͕ఏڙ։࢝ • 88%$Ͱ͸3FGVOE/PUJGJDBUJPOT͕ൃද͞Ε 
 ࣗಈߋ৽αϒεΫϦϓγϣϯҎ֎ͷ঎඼ʹର͢Δ"QQMF͔Βͷฦۚ΋ 
 ݕ஌Ͱ͖ΔΑ͏ʹͳͬͨ 12
  6. ˜;0;0 *OD 13 4FSWFS/PUJGJDBUJPOTҎલͷطଘϢʔβͷεςʔλεϙʔϦϯά 3FDFJQUͷ7FSJGZ ݕূ 🍎 σίʔυ͞Εͨ3FDFJQU εςʔλε͕ 21006

    ͩͬͨΒ 
 αʔϏεଆΞΧ΢ϯτΛߪಡղআ ͜ΕΛશͯͷߪಡΞΧ΢ϯτʹରͯ͠ఆظతʹߦ͏ඞཁ͕͋Δ 
 Ϣʔβ਺ʹΑͬͯ͸ຖ೔๲େͳॲཧ͕ൃੜ
  7. ˜;0;0 *OD 14 4FSWFS/PUJGJDBUJPOTΛ༻͍ͨطଘϢʔβͷεςʔλεϙʔϦϯά ߪಡͷߋ৽௨஌ 🍎 notification_typeΛ֬ೝ͠ 
 ߋ৽͞Ε͍ͯͨͳΒ͹ 


    εςʔλεϙʔϦϯάର৅͔Β֎͢ ࠷৽ͷReceiptΛอଘ ैདྷͷαʔόαΠυͰͷεςʔλεϙʔϦϯάΛ 
 ΍ΊΒΕΔΘ͚Ͱ͸ͳ͍͕ɺ݅਺͸͔ͳΓݮΒͤΔ
  8. ˜;0;0 *OD ͦͷଞͷΞοϓσʔτ αϒεΫϦϓγϣϯ • ߪಡͷ੾Γସ͑   ◦ ΞοϓάϨʔυɺμ΢ϯάϨʔυɺΫϩεάϨʔυ

    • ஋্͛ʹؔ͢ΔՁ֨ಉҙը໘ͷදࣔ   ◦ ஋্͛ʹϢʔβ͕ಉҙ͢Δ·Ͱ͸ߪಡ͕ࣗಈߋ৽͞Εͳ͍͜ͱʹΑΔ 
 Ұ੪ࣗಈղ໿ʹΑΔଛࣦΛܰݮ • ࢧ෷͍༛༧ظؒ   ◦ ΫϨδοτΧʔυظݶ੾Ε౳ʹΑΔܾࡁͷࣦഊͱ͍ͬͨ 
 ෆຊҙͳߪಡͷߋ৽தࢭΛ཈ࢭ 17
  9. ˜;0;0 *OD "TLUP#VZ  • "QQMF*%ʹϑΝϛϦʔઃఆ͞Ε͍ͯΔ৔߹ɺ 
 ࢠͲ΋ͷߪೖͷঝ୚Λอޢऀʹ֬ೝ͢Δػೳ • ߪಡͷ֬ೝதɺτϥϯβΫγϣϯ͸ʮEFGFSSFEʯͱ͍͏ঢ়ଶʹͳΓ

    
 อޢऀͷڐՄ͕֬ೝ͞ΕͨΒʮQVSDIBTFEʯͱͳΔ ◦ 4BOECPY؀ڥͰEFGFSSFE͔ΒઌʹਐΉखஈ͕ແͯ͘ಈ࡞֬ೝʹࠔͬͨ 19
  10. ˜;0;0 *OD ͦͷଞͷΞοϓσʔτ Ϗδωε • σδλϧίϯςϯπ؅ཧ   ◦ "QQ4UPSF$POOFDUͰσδλϧίϯςϯπΛ؅ཧ͠

    
 4,%PXOMPBEͰμ΢ϯϩʔυՄೳʹ ݱࡏ͸EFQSFDBUFE  • "QQ಺՝ۚͷϓϩϞʔγϣϯ   ◦ ΞϓϦ಺Ͱ͸ͳ͘ɺ"QQ4UPSF͔Β*"1ͷ঎඼ΛߪೖͰ͖Δ࢓૊Έ 24
  11. ˜;0;0 *OD ϨγʔτϑΥʔϚοτͷมԽ  • J04ͰϦχϡʔΞϧ • େ͖ͳҧ͍ͱͯ͠͸ ◦ 4,1BZNFOU5SBOTBDUJPO͔Βݸʑʹऔಘ͢Δ࣮૷͔Β

    
 "QQMJDBUJPO3FDFJQUʹաڈͷܾࡁͷϨγʔτؚ͕·ΕΔΑ͏ʹมԽ ◦ 4,3FDFJQU3FGSFTI3FRVFTUΛ༻͍Δ͜ͱͰ 
 τϥϯβΫγϣϯΛൃੜͤ͞Δ͜ͱͳ͘࠷৽ͷϨγʔτΛऔಘՄೳʹ ˠߪಡͷ3FTUPSF ෮ݩ ͕΍Γ΍͘͢ͳͬͨ 26
  12. ˜;0;0 *OD ͔ͭͯͷ4BOECPY؀ڥ • ฦۚ͸͓Ζ͔ɺखಈͰߪಡͷղআ΋ෆՄೳ • ߪಡͷߋ৽ͷಈ࡞֬ೝ͕େมͩͬͨ ◦ 4BOECPY؀ڥͰ͸ɺ෼Ͱϲ݄͕ܦաͯ͠ߪಡ͕ߋ৽͞ΕΔ ◦

    ճ·Ͱ͸ඞͣߪಡ͕ߋ৽͞Εɺճ໨ͰFYQJSFEʹͳΔ ▪ ճಈ࡞֬ೝΛ͢Δͷʹ෼͔͔Δ😇 ◦ ಉ͡4BOECPYΞΧ΢ϯτΛԿ౓΋࢖͍ͬͯΔͱ 
 ͦͷ͏ͪҰ౓΋ߪಡΛߋ৽͠ͳ͘ͳΔ ಾ 30
  13. ˜;0;0 *OD 4UPSF,JU5FTUJOHJO9DPEFͷԸܙ • ߪೖཤྺͷ؅ཧ͕Մೳ ◦ ߪಡͷࣗಈߋ৽ঢ়ଶͷมߋ͕Մೳ ◦ Ұ౓ങͬͨඇফ໣ܕͷ঎඼ʹର͠ 


    ࠶౓ߪೖςετ͕Մೳʹ ◦ GJOJTI͞Εͯͳ͍USBOTBDUJPOʹ͸ 
 ϚʔΫ͕෇͘ • τϥϯβΫγϣϯͷૢ࡞͕Մೳ ◦ ΦϑΝʔ΍ฦۚϦΫΤετɺ 
 "TLUP#VZɺ஋্͛ಉҙͷςετ΋Մೳ 34
  14. ˜;0;0 *OD ͜Ε͔Βͷ*O"QQ1VSDIBTFʙ೥ͷมߋ఺ʙ • "QQ5SBOTBDUJPOͷ௥Ճ ◦ "QQͦͷ΋ͷͷߪೖͷݕূ͕Մೳ • 4UPSF,JU5FTUJOHJO9DPEFͷߋ৽ ◦

    "QQ4UPSF$POOFDUʹొ࿥ͯ͋͠Δ঎඼ΛಉظՄೳʹ ◦ τϥϯβΫγϣϯ؅ཧը໘Ͱࡉ͔͍৘ใΛݟΔ͜ͱ͕Մೳʹ • 4BOECPY؀ڥͷߋ৽ ◦ ςελʔ͝ͱʹ৽͍͠ϝʔϧΞυϨεΛೖྗ͠ͳͯ͘Α͘ͳͬͨ ◦ ߪೖཤྺͷΫϦΞ΍ߪೖঢ়ଶΛதஅͳͲΛ"QQ4UPSF$POOFDUʹ 
 ࠓޙ௥Ճ༧ఆ 36
  15. ˜;0;0 *OD ·ͱΊ • ໿೥ʹ౉Δྺ࢙ͷதͰɺ΍ΕΔ͜ͱ͸ͱͯ΋૿͑ͨ ◦ ࣮૷΍ݕূΛαϙʔτ͢Δ࢓૊Έ΋ॆ࣮͍ͯͬͨ͠ • ςετͷͨΊͷ࢓૊Έ΋ॆ࣮͠ɺ৺Ժ΍͔ʹ՝ۚΛ࣮૷͠΍͘͢ͳͬͨ •

    ௕Β͘Ϩγʔτͷݕূʹେ͖͘ґଘ͍ͯͨ͠*O"QQ1VSDIBTFͷ࣮૷͸ 
 ۙ೥௥Ճ͞Εͨ/PUJGJDBUJPOT΍4UPSF,JUɺ৽ͨͳ"1*ʹΑͬͯ 
 ͦͷ͕࢟େ͖͘มΘ͖ͬͯͨ • ΦϑΝʔͳͲɺϓϩϞʔγϣϯʹؔΘΔػೳ΋େ෯ʹڧԽ͞ΕͨͷͰ 
 Ϗδωεʹ༗ޮ׆༻͍͖͍ͯͨ͠Ͱ͢Ͷ 37
  16. ˜;0;0 *OD IUUQT[P[PKQ • ϑΝογϣϯ&$ •  Ҏ্ͷγϣοϓɺ Ҏ্ͷϒϥϯυͷऔΓѻ͍ •

    ৗ࣌ສ఺Ҏ্ͷ঎඼ΞΠςϜ਺ͱຖ೔ฏۉ ఺Ҏ্ͷ৽ண ঎඼Λܝࡌʢ೥݄຤࣌఺ʣ • ϒϥϯυݹணͷϑΝογϣϯκʔϯʮ;0;064&%ʯ΍ ίεϝઐ໳Ϟʔϧʮ;0;0$04.&ʯɺۺͷઐ໳Ϟʔϧ ʮ;0;04)0&4ʯɺϥάδϡΞϦʔˍσβΠφʔζκʔϯ ʮ;0;07*--"ʯΛల։ • ଈ೔഑ૹαʔϏε • ΪϑτϥοϐϯάαʔϏε • πέ෷͍ͳͲ 38