iOS課金
Overview
iOSの課金概要についてまとめるセクション。
Androidよりも審査が厳しいと言われている。
In-App Purchase
アプリ内で電子書籍の購入や、アクションゲームで主人公がパワーアップするアイテムの購入など、アプリ内での販売機能をAppleはIn-App Purchaseと呼んでいる。
販売できる商品
「In-App Purchase」を使って販売するものをプロダクト(Product)と呼ぶ。
「In-App Purchase」を使用して販売できるプロダクトは次のとおり。
コンテンツ(Content)
電子書籍、雑誌、写真、アート作品など有形のものから。
機能プロダクト
アプリへ事前に組み込んでおき、購入することでロックを解除してその機能を利用者に提供する。
無料アプリで最初は広告を表示しておき、購入することでその広告を非表示にすることや、ゲーム内で遊べるステージが増えることなど考えられる。
サービス
音声のテキスト化や翻訳など一度限りのサービスやデータのコレクションへのアクセスなどの継続するサービスに対して利用者に支払いを求めるもの。
設定できる料金
App Storeでは120円から118,800円まで設定ができる。
ASO
App Store内の検索順位を上位にする施策が存在する。
App Storeとのやりとり
アプリで購入処理を実装する際は、App Storeと直接やりとりするのではなくStoreKit フレームワークを通じてApp Storeとのやりとりを行う。
アプリはどのようなプロダクトがあるかを知りたい時、あるいはプロダクトを購入するときはStoreKitフレームワークを呼び出す形でApp Storeに購入などのリクエストを出す。
唯一、AppStoreに対して直接通信を行うのは購入したプロダクトのレシートの確認の場合のみ。
StoreKit
iOSのサブスクリプションを含むアプリ内課金全般を管理するのはStoreKitと呼ばれ、StoreKitはiOS/macOSアプリ内でアプリ内課金(In-App Purchases, IAP)やサブスクリプションを処理するためのApple公式のフレームワーク。
StoreKitでできること
-
アプリ内課金の処理
- 1回限りの購入(Consumable, Non-Consumable)
- サブスクリプション(自動更新型 / 非更新型)
- アップグレード / ダウングレード / クロスグレード
-
サブスクリプション管理
- ユーザーのサブスクリプション状況を取得
- 自動更新 / 更新のキャンセル / 期限切れの検知
- 割引オファーやプロモーションコードの適用
-
App Storeサーバ通知(App Store Server Notifications)
- Webhook(サーバー通知)を使って、サブスクリプションの更新やキャンセルをリアルタイムで受信
- サブスクの課金失敗・復旧、無料トライアル終了の検出
-
ユーザーの購入情報の取得
- ユーザーがどのサブスクリプションに加入しているか確認
- StoreKit 2 APIを使用すると、より簡単に購入情報を取得可能
StoreKitの主なAPI
API名説明 StoreKit 1 (SKPaymentQueue) 従来のアプリ内課金を処理するAPI(iOS 3.0〜) StoreKit 2 (Transaction, Product, SubscriptionGroup) より簡潔で強力なサブスクリプション管理API(iOS 15+) App Store Server API App Storeのサーバー側と直接やり取りするためのAPI App Store Server Notifications Webhookを使って購入/更新/解約などの通知をサーバーに送る
StoreKit関連のApple公式ドキュメント
- StoreKit 2 API
- アプリ内課金の実装ガイド
- App Store Server API(レシートの検証や購入情報取得)
- App Store Server Notifications(Webhook通知)
結論
iOSのサブスクリプション管理は「StoreKit」を中心に行われる。 • アプリ内ではStoreKit 1 or StoreKit 2を使って課金処理 • サーバーではApp Store Server API or App Store Server Notificationsを使って状態を管理
サブスクの移行やWebhookの設定をする場合、「App Store Server Notifications」の部分が特に重要