Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2017年01月18日

アプリ内課金 実装手順



In-App Purchase(アプリ内課金)をアプリに組み込む手順。

1. 組み込み前のiTunes Connectの設定
(1) iTunes Connectで、アプリ内課金を組み込みたいアプリのApp情報を開く。
(2) 機能タブからApp内課金を開き、情報を追加する。
(3) 製品IDは、逆ドメイン名で指定推奨。
(4) アプリで表示されるアプリ内課金コンテンツの説明文に英語版は必須で、日本語版などローカライズ版を追加する。
(5) 削除した製品IDは削除した状態のまま残り、再利用することはできない。


2. アプリにアプリ内課金のコードを組み込む(下記は非消耗型の場合)
(1) 上記1.(3)で定義した製品IDを、アプリ内バンドルplistに組み込む。あるいは、サーバから取得する。
(2) 製品IDを元にStorekitを用いてAppleのサーバにアプリ内課金情報をリクエスト。
(3) (2)で取得した情報を取得して、購入ボタンとともに画面表示する。
(4) 無効な製品IDは購入対象から除外するようにすること。
(5) ユーザが製品IDを選択して購入ボタンを押したときに、StoreKitを用いてAppleのサーバに購入の要求をする。
(6) 購入時のApple IDの入力、購入完了の画面はStoreKitで自動的に表示される。
(7) アプリ側はStoreKitの処理結果を受けて画面再表示などを行う。
(8) 購入後のレシートはStoreKitによりアプリ内に所定の場所に保存される。
(9) レシート復元画面を作り、StoreKitを用いて実施するレシート復元コードを追加。レシートの更新(SKReceiptRefreshRequest)と復元(SKPaymentQueue: restoreCompletedTransactions)の2種類がある。
(10) アプリ内課金コンテンツを利用する場合は、レシートの検証を実施する。レシートの検証は独自に組み込むこと。セキュリティを強固にするために、オリジナルなコードでレシート検証を実装する。
(11) Appleが推奨するレシート検証手順にて検証を実施し、さらに使用しようとしているアプリ内課金コンテンツの製品IDがレシートに含まれ、かつ、有効なレシートである場合に、コンテンツが利用できるようにする。可能な限り複雑かつ強固な検証ロジックを組み込む必要がある。


3. テスト環境でのテスト
(1) Macにデバイスを接続し、Xcodeからアプリを起動した場合は、Appleのアプリ内課金サーバはテスト環境に接続される。購入時に画面上に「sandbox」と表示される。
(2) 購入、復元、エラー処理、コンテンツ利用時のレシート検証等、あらゆるテストケースを考慮しテストを実施する。
(3) テスト用のApple IDアカウントは、専用のアカウントを使用すること。一度、本番環境で使用したアカウントは、テスト環境では利用できなくなる。


4. 本番環境でのテスト
(1) アプリ内課金は、Appleの審査が必要なので、開発中は本番環境でのテストはできないが、AdHocやTestFlightを使って動作確認を実施する。
(2) 本番環境(Production)向けにビルドしたAdHoc用バイナリやTestFlight向けにアーカイブしたバイナリ(iTunes Connectにアップロードしたバイナリ)で実行しても、Appleのアプリ内課金サーバはテスト環境に接続される。(購入時、StoreKitで表示される画面において「sandbox」と表示される。)


5. テスト完了後のiTunes Connectの設定
(1) Xcodeからアプリをアーカイブして、iTunes Connectにアップロードする。
(2) iTunes ConnectのApp内課金を開き、審査用スクリーンショットをpng形式で登録する。
(3) 初回のアプリ内課金組み込み時は、審査するバージョンの画面におけるApp内課金セクションで組み込むアプリ内課金を選択して保存、審査に提出する。
(4) (3)操作後、アプリ内課金を組み込んだバイナリのバージョンが「審査待ち」、アプリ内課金も「審査待ち」となっていることを確認する。審査待ちとなった後は、アプリ内課金を組み込んだバイナリのバージョンの画面にはApp内課金セクションは表示されなくなる。(3)を操作しないと、アプリ内課金は「審査待ち」とはならず、いつまで経っても「送信準備中」となる。(3)の操作を忘れてアプリのバイナリのみ「審査待ち」状態にした場合は、アプリの審査待ちをセルフリジェクトして、(3)の操作をやり直す。


6. App Storeリリース時
(1) 配信開始は手動で実施すること。
(2) アプリ内課金の配信開始は、アプリのバイナリの配信開始と必ずしも同期が取れているわけではない。アプリのバイナリ及びアプリ内課金のステータスがReady For Salesとなってから9時間以上経過してアプリ内課金の購入が出来る場合があるため、ステータスがReady For Salesとなってから半日程度経過後に、App Storeでのバイナリ配信を開始すること。


参考記事:
https://developer.apple.com/jp/documentation/StoreKitGuide.pdf
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnectInAppPurchase_Guide_Jpn/Chapters/Introduction.html
https://developer.apple.com/jp/documentation/General/ValidateAppStoreReceipt/Introduction.html
http://itblogdsi.blog.fc2.com/blog-entry-65.html
http://qiita.com/sora/items/9f81cf90b25c2a7d3101
http://qiita.com/monoqlo/items/24d36e3a95bc813a7276
http://inside.pixiv.net/entry/2014/12/09/111310
http://blog.tworks.jp/archives/374
http://qiita.com/fmtonakai/items/6d13c8e535c5d8904c60
http://glassonion.hatenablog.com/entry/20111201/1322697417
http://nantekottai.com/2011/10/31/basics-of-storekit-transaction/
http://qiita.com/kyasusoft/items/28e48f60f46c32483061

タグ:Mac iPAD iPhone
posted by mobileDeveloper at 20:41 | Comment(0) | TrackBack(0) | アプリ内課金 はてなブックマーク - アプリ内課金 実装手順 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。