Skip to main content

iOS課金

Overview

iOSの課金概要についてまとめるセクション。

info

Androidよりも審査が厳しいと言われている。

In-App Purchase

アプリ内で電子書籍の購入や、アクションゲームで主人公がパワーアップするアイテムの購入など、アプリ内での販売機能をAppleはIn-App Purchaseと呼んでいる。

販売できる商品

「In-App Purchase」を使って販売するものをプロダクト(Product)と呼ぶ。
「In-App Purchase」を使用して販売できるプロダクトは次のとおり。

コンテンツ(Content)

電子書籍、雑誌、写真、アート作品など有形のものから。

機能プロダクト

アプリへ事前に組み込んでおき、購入することでロックを解除してその機能を利用者に提供する。

tip

無料アプリで最初は広告を表示しておき、購入することでその広告を非表示にすることや、ゲーム内で遊べるステージが増えることなど考えられる。

サービス

音声のテキスト化や翻訳など一度限りのサービスやデータのコレクションへのアクセスなどの継続するサービスに対して利用者に支払いを求めるもの。

設定できる料金

App Storeでは120円から118,800円まで設定ができる。

ASO

App Store内の検索順位を上位にする施策が存在する。

App Storeとのやりとり

アプリで購入処理を実装する際は、App Storeと直接やりとりするのではなくStoreKit フレームワークを通じてApp Storeとのやりとりを行う。

tip

アプリはどのようなプロダクトがあるかを知りたい時、あるいはプロダクトを購入するときはStoreKitフレームワークを呼び出す形でApp Storeに購入などのリクエストを出す。

caution

唯一、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公式ドキュメント

結論

iOSのサブスクリプション管理は「StoreKit」を中心に行われる。 • アプリ内ではStoreKit 1 or StoreKit 2を使って課金処理 • サーバーではApp Store Server API or App Store Server Notificationsを使って状態を管理

サブスクの移行やWebhookの設定をする場合、「App Store Server Notifications」の部分が特に重要