ノート的なやつ

学んだことの備忘録です。ご指摘等お待ちしております。

アプリ内課金検証方法

会社でアプリ内課金を実装し直した経緯があり、一人で検証していたのですが、色々とハマったのでここに備忘録として残しておきます。

アプリ内課金検証方法手順

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/