アプリ内課金検証方法
会社でアプリ内課金を実装し直した経緯があり、一人で検証していたのですが、色々とハマったのでここに備忘録として残しておきます。
アプリ内課金検証方法手順
Sandboxユーザーを作成する
- Sandbox用メールアカウントを用意 ※1
- iTunesConnect Sandboxテスターにメールアドレスを登録
- 登録したメールアドレスにAppleDeveloperからのメールアドレスが届くので承認。
※1 今まで一度もAppStoreなどで実際の課金履歴が無いメールアドレスに限る
アプリの準備
- 実機にアプリをインストール(使用するビルドはXcode、Testflightどちらでも可)
- 実機に紐づいているAppleアカウントから一旦サインアウトする * 大事。やらないとSandbox環境でのテストができません。
アプリ課金検証
- 課金決済時にEnvironment: sandboxになっている※1ことを確認する(画像参照※2)
- 課金決済時にAppleIDでのログインを求められるので※1上記で登録したSandboxユーザーのアカウントを入力する
- 購入を押下
※1 アプリではなく公式課金APIのStoreKitの仕様
注意点
Sandbox環境下での購読期間
Sandbox環境下では時間の流れが変わる
設定した購読期間 | Sandbox環境下での時間 |
---|---|
7日 | 3分 |
1ヶ月 | 5分 |
2ヶ月 | 10分 |
3ヶ月 | 15分 |
6ヶ月 | 30分 |
1年 | 1時間 |
※Sandbox環境下での自動更新は6回まで自動で行われる。また、キャンセル等はできない仕様になっている。つまり、一ヶ月プランを購読処理した場合は30分(5分 × 6回)間自動更新される
"iTunes Storeに接続できません"エラーケースまとめ
このエラーは様々な要因によって引き起こされる模様。遭遇したケースをまとめていきます。 Sandbox環境は不安定なので結構検証大変だったりするみたいです。頑張って!
そもそもStoreKit周りのコードが間違っている
Sandboxユーザーで検証できていない
- 課金処理をテストする前にAppleStoreからサインアウトしていない
- SandboxアカウントがAppleStoreでの使用などにより無効化されている などが考えられる。後者ならSandboxユーザーを再作成することで対応できると思われる。
Sandboxサーバーが落ちている
下記URLを確認 https://developer.apple.com/system-status/
短時間に複数回リクエストを送る
そういうエラーメッセージ返して欲しいですよね、わかります
参考URL
公式: Sandboxユーザーの作成方法
公式: 推奨されるアプリ内課金のテスト方法
以下その他参考記事 https://ameblo.jp/principia-ca/entry-12071724382.html https://www.aguuu.com/archives/2012/12/in-app-purchase-annotation/