App内課金

App内で行われる課金を通じて、追加のコンテンツやサービスをユーザーに提供します。

概要

App内課金を使用すると、App内でコンテンツや機能を購入する機会をユーザーに提供できます。App内で購入することも、App StoreApp内課金を宣伝することを選択すればApp Storeから直接購入することもできます。

StoreKitのフレームワークが、AppのためにApp Storeに接続し、支払いを促して安全に処理します。次に、フレームワークは、購入済みプロダクトを配信するAppに通知します。購入を検証するため、App Storeを使用してサーバ上で、またはデバイス上で、レシートを検証できます。自動更新サブスクリプションの場合、App Storeからサーバに主なサブスクリプションイベントを通知することもできます。

トランザクション中に発生するStoreKit、App、App Store、サーバ間のやり取りを示す図。

App内課金を使用するには、まずApp Store Connectで、ユーザーに提供したいプロダクトを設定する必要があります。アプリケーションの開発状況に応じて、プロダクトを追加したり削除したりすることができ、また既存のプロダクトの改善や再設定を行うことができます。

プロダクトタイプを理解する

プロダクトタイプを使うと、複数の異なるプロダクト動作を提供できるため、App内でさまざまなビジネスモデルにApp内課金を使うことができます。提供できるApp内課金には、4つのタイプがあります。

  • 消耗型は、一度使うとなくなり、複数回購入できます。

  • 非消耗型は、一度購入すれば無期限で使用できます。

  • サービスまたはコンテンツの自動更新サブスクリプションは、一度購入すると、ユーザーがキャンセルするまで定期的に自動更新されます。

  • サービスまたはコンテンツの非更新サブスクリプションは、期間限定でアクセスを提供するもので、自動更新されず、再び購入することができます。

非消耗型と自動更新サブスクリプションは、StoreKitを使用して複数のデバイス間で同期や復元が可能です。ユーザーが自動更新または非更新のサブスクリプションを購入した場合、Appは、ユーザーのすべてのデバイスでそのサブスクリプションを利用できるように、また、ユーザーが過去に購入したものを復元できるように対応する必要があります。

トピック

最初のステップ

トランザクションオブザーバと支払いキューの設定(英語)

オブザーバを追加することによって、Appでトランザクションを受け取って処理できるようにします。

App内課金の提供、完了、復元(英語)

Appでトランザクションを取得、完了、復元します。

class SKPaymentQueue(英語)

App Storeによって処理される支払いトランザクションのキューです。

protocol SKPaymentQueueDelegate(英語)

トランザクションの完了に必要な情報を提供するために実装されるプロトコルです。

protocol SKPaymentTransactionObserver(英語)

トランザクションを処理し、購入済みの機能をロック解除し、宣伝されているApp内購入を続けるメソッド群です。

プロダクト情報の取得

App内プロダクトIDの読み込み(英語)

App Storeからプロダクト情報を取得するために、App内プロダクトの一意のIDを読み込みます。

App Storeからのプロダクト情報の取得(英語)

ユーザーに対して表示するため、Appで販売するプロダクトの最新情報を取得します。

class SKProductsRequest(英語)

指定されたプロダクトのリストについて、App Storeからローカライズされた情報を取得できるオブジェクトです。

class SKProduct(英語)

App Store Connectで以前に登録されたプロダクトに関する情報です。

class SKProductsResponse(英語)

プロダクトリストに関する情報の要求に対する、App Storeの応答です。

class SKProductSubscriptionPeriod(英語)

サブスクリプション期間に関する情報を含むオブジェクトです。

class SKProductDiscount(英語)

サブスクリプションプロダクトの割引オファーの詳細です。

ストアフロント情報の取得

class SKStorefront(英語)

Apple App Storeのストアフロントの場所と一意のIDを含むオブジェクトです。

購入の開始

App Storeからの支払い要求(英語)

ユーザーがプロダクトの購入を選択したときに、App Storeに支払い要求を送信します。

class SKPayment(英語)

App Storeに対し、Appで提供される追加機能の支払い処理を依頼する要求です。

class SKMutablePayment(英語)

App Storeに対し、Appで提供される追加機能の支払い処理を依頼する、ミュータブルな要求です。

class SKPaymentDiscount(英語)

支払いに適用される署名済みの割引。

class SKPaymentQueue(英語)

App Storeによって処理される支払いトランザクションのキューです。

購入の検証

レシート検証技術の選択(英語)

Appに適したレシート検証のタイプを選択します。

App Storeを使用したレシートの検証

安全なサーバ上で、App Storeを使用してトランザクションを検証します。

コンテンツの配信

トランザクションの処理(英語)

トランザクションキューのオブザーバを登録し、App Storeからトランザクションアップデートを取得して処理します。

class SKDownload(英語)

プロダクトに関連する、ダウンロード可能なコンテンツです。

class SKReceiptRefreshRequest(英語)

レシートの更新要求です。レシートには、Appでのユーザーのトランザクションが示されます。

class SKRequest(英語)

App Storeへの要求を表す抽象クラスです。

class SKPaymentTransaction(英語)

支払いキュー内のオブジェクトです。

func SKTerminateForInvalidReceipt(英語)()

Appを使用するためのライセンスが期限切れの場合は、Appを終了します。

購入したプロダクトの復元

class SKReceiptRefreshRequest(英語)

レシートの更新要求です。レシートには、Appでのユーザーのトランザクションが示されます。

class SKRequest(英語)

App Storeへの要求を表す抽象クラスです。

class SKPaymentTransaction(英語)

支払いキュー内のオブジェクトです。

func SKTerminateForInvalidReceipt(英語)()

Appを使用するためのライセンスが期限切れの場合は、Appを終了します。

サブスクリプションの取り扱い

サブスクリプションの請求処理(英語)

コンテンツへのアクセスを制御する必要があるすべてのシナリオを計画しながら、サブスクリプションプロダクトの日時の制約に関するロジックを構築します。

サーバ間通知の有効化(英語)

App Storeからのサーバ通知を使って、ユーザーのサブスクリプション状態変更を監視し、状態変更に応答します。

複数のAppに対するサブスクリプションの提供(英語)

単一の自動更新サブスクリプションで複数のAppを利用できるようにします。

App内課金のプロモーション

class SKProductStorePromotionController(英語)

デバイスごとにApp内課金の順序と可視性をカスタマイズするための、プロダクトプロモーションコントローラです。

プロモーション対象のApp内課金のテスト

App StoreでAppの提供を開始する前に、App内課金をテストします。

お試しオファーの提供

Appへのお試しオファーの実装

対象となるユーザーに対し、自動更新サブスクリプションのお試し価格をオファーします。

お試しオファーのテスト

さまざまなユーザーシナリオでお試し価格をテストします。

class SKProductDiscount(英語)

サブスクリプションプロダクトの割引オファーの詳細です。

サブスクリプションオファーの提供

サブスクリプションオファーの設定(英語)

App Store Connectでキーを生成し、自動更新サブスクリプションのオファーを設定します。

Appへのサブスクリプションオファーの実装(英語)

対象となるサブスクリプション登録者に、自動更新サブスクリプションプロダクトの割引価格を提供します。

サブスクリプションオファー用の署名の生成

秘密鍵を使用して、サブスクリプションオファーを検証するための署名を作成します。

Node.jsを使用したサブスクリプションオファー用の署名の生成(英語)

秘密鍵と軽量の暗号ライブラリを使用して、署名を生成します。

class SKPaymentDiscount(英語)

支払いに適用される署名済みの割引。