【iOSDC Japan 2024 レポート】Day0「StoreKit 2によるモダンなアプリ内課金」を聞いてきた #iosdc
2024年8月22日から24日に開催された「iOSDC Japan 2024」に参加してきた。WWDCが世界的なカンファレンスであるとすれば、iOSDC Japanは日本国内での最大のiOSデベロッパーカンファレンスだ。
この記事では、Day0「StoreKit 2によるモダンなアプリ内課金」についての感想を共有する。
StoreKit 2によるモダンなアプリ内課金
登壇者
- 蔀 さん
スライド
概要
2024年4月、note iOSアプリはアプリ内課金機能をリリースしました。本セッションでは、StoreKit 2の導入、実装、テストについて説明します。これからアプリ内課金を実装しようとする方にとって、参考になる情報を提供できれば幸いです。
具体的には以下の内容を扱います。
- noteアプリのポイント課金仕様
- StoreKit 1とStoreKit 2の比較
- StoreKit 2による実装
- async/awaitによる非同期処理の簡略化
- レシート検証の簡素化
- テスト方法
- sandbox環境とTestFlightを使ったテスト
- StoreKitTestの活用
2024年4月、noteアプリにアプリ内課金が導入された。
これまでアプリ内課金が導入できていなかった理由として、手数料の問題があったそうだ。外部決済でも27%の手数料がかかるため、noteでは手数料を含めて140円で100ポイントを販売し、1ポイント1円として記事を購入できるようにしている。
このセッションでは、StoreKit 1との比較や新しい非同期処理の簡略化、レシート検証の改善点、StoreKit 2の導入から実装、テスト方法までが詳細に解説された。
また、課金アイテムのIDが開発アカウントに紐付いている全アプリで共通だったため、本番アプリでそのIDが登録できなくなった事例も紹介された。質疑応答では、開発アカウントを通じてサポートに連絡すれば、当該のIDの記録を削除してもらえるという知見も共有された。
こう思った
少し昔の話だが、2022年9月13日にリリースされたXcode 14.0で、StoreKit 1を使っている際にSandbox環境でリストアができない不具合に遭遇したことがある。
この不具合が修正されるまでにはXcode 14.1のリリースを待つ必要があった。この経験から、AppleがStoreKit 1のメンテナンスにあまり力を入れていないと感じ、それ以降はStoreKit 2やRevenueCat SDKを使用するようになった。
本セッションでも紹介されたように、StoreKit 1では非同期処理の煩雑さやレシート検証の複雑さが課題だったが、StoreKit 2ではこれらの問題が大幅に解消された。Swiftのasync/awaitで非同期処理が扱えるようになったことで、実装が容易になり、コードの可読性も向上した点が特に嬉しかった。
このセッションでは、新たにStoreKitTestについて学んだ。以前はシミュレータで任意のエラーを返す用途にしか使えないと思っていたが、課金処理のユニットテストに利用できることを知った。これからは積極的に活用していきたい。
個人開発のアプリではRevenueCat SDKを使用してサブスクリプション課金を一本化する予定だが、今後アイテム課金を実装する際にはStoreKit 1ではなくStoreKit 2を推す予定だ。