アプリ内課金のドキュメントをざっと読む
公式ドキュメントより
アプリ内課金はStoreKitというフレームワークを使う
課金するにはその内容ごとに product を iTunes Connect に登録する
iTures Store から情報を取得してユーザーに表示するには: SKProductsRequest を作って必要な情報を渡し、SKRequestDelegate で応答を受け取る
支払い処理の流れ
1. SKPaymentQueue にオブザーバーオブジェクト を登録する
2. グローバルなキュー SKPaymentQueue に支払い情報 SKPayment を追加する
3. キューによってトランザクション SKPaymentTransaction が生成される
4. オブザーバーでトランザクションの更新を受け取る
5. (AppStore のウェブAPIを使って結果の内容が正しいか確認する)
6. 支払い完了、支払いエラーなどの結果にしたがって適切な処理をする
過去に完了したトランザクションは SKPaymentQueue のメソッド restoreCompletedTransactions を呼ぶことで復元することができる
- 新しい iPhone に引っ越した後などに使える
アプリの課金システムのアーキテクチャを決めるにあたって考えるべきこと
- 追加購入できるモノの情報をどう管理し、どうユーザーに見せるか
- 追加購入したモノをどうアプリ内で有効にするか
- 追加購入できるモノの数や、更新頻度はどれくらいか
アーキテクチャの2つのモデル
- 自律型 (プロダクトIDも追加機能もアプリ内に保持する)
- ダウンロードコンテンツモデル (プロダクトID、追加機能のデータ、購入履歴を独自サーバに持つ)
iTunes Connect の FAQ より:
無料アプリはアプリ内課金はできない
プロダクトを登録するには少なくとも1つの有料アプリの登録が必要 (承認済みである必要があるかは不明)
プロダクトのステータスは最初は 「開発者による承認待ち」 になっており、まずアプリ内課金のテストをすることができるようになっている