背景
iOSの課金環境のテストをする上でSandboxテスターが必要となりますが、Sandboxテスターを自動作成したほうが効率が良いケースがあります。
自動作成するにあたりむやみに作り続けるのは良くない+ドキュメントに記載がなかったこともあり、Sandboxテスターの上限数を調べるために以下の確認をしました。
サンプルコード
手始めに2500件のSandboxテスターを作成します。
fastlaneのSpaceshipを使うことでSandboxテスターの作成が簡単に行えるので、以下のようなコードで確認しました。
# Fastfile
default_platform(:ios)
require 'spaceship'
platform :ios do
lane :create_sandbox_users do
Spaceship::Tunes.login(ENV["SPACESHIP_USERNAME"], ENV["SPACESHIP_PASSWORD"])
for i in 1..2500
email = "#{format('%05d', i)}@test.com"
puts email
Spaceship::Tunes::SandboxTester.create!(email: email, password: ENV["SANDBOX_PASSWORD"])
end
end
end
実行例
fastlane create_sandbox_users
出力例
00001@test.com
00002@test.com
00003@test.com
00004@test.com
.
.
.
2500件のSandboxテスターを作成
Sandboxテスター一覧
AppStoreConnect上では、以下のように表示されます。
疑問点
ここで疑問に思ったのが作成した2500件のアカウント全ては表示されず、02277@test.com
までしか表示されていません。
(ところどころ表示されていないアカウントがあったのでトータル2000件ほどが表示されています)
検索結果
また、AppStoreConnect上の検索は表示しているものに対してフィルターしているため、検索結果にも表示されません。
Sandboxテスター一覧の確認
そもそも本当に作成がされていないのか以下の手順でSandboxテスター一覧を確認しました。
- AppStoreConnectにログイン
- https://appstoreconnect.apple.com/WebObjects/iTunesConnect.woa/ra/users/iap にアクセス
02500@test.com
が含まれていることから、AppStoreConnect上には表示されていないだけで作成されていることが確認できます。
iPhoneでログイン
試しに表示されていない02500@test.com
にiPhone上でログインをしようとすると、問題なくログインできます。
わかったこと
この時点でわかったことをまとめると
- AppStoreConnect上ではSandboxテスターの表示上限数がある(約2000件)
- 1.で表示されていなくても、Sandboxテスターの作成が成功していればiPhone上でログイン可能
さらにSandboxテスターを増やしたらどうなるかを確認するために、トータル数10000(2500+7500)のSandboxテスターを作成してみます。
10000件のSandboxテスターを作成
Sandboxテスター一覧
新規で作成したユーザーが表示されていますが、04085@test.com
で止まっています。
iPhoneでログイン
前回同様に作成が成功したアカウントにはログイン可能です
Sandboxテスター一覧が取得できない
しかし、https://appstoreconnect.apple.com/WebObjects/iTunesConnect.woa/ra/users/iap にアクセスするとユーザー数が多いのが原因か504 Gateway Timeout
によって、Sandboxテスター一覧のレスポンスが取得できませんでした。
まとめ
上記で確認してきたことをまとめると
- AppStoreConnect上のSandboxテスターには表示上限数がある(自分の試した環境では約2000件だった)
- 作成が成功したアカウントは、AppStoreConnect上の表示有無によらずiPhone上でログイン可能
- 一定の作成数を超えると、ユーザー一覧情報が取得できなくなる
作成したアカウントがAppStoreConnect上に表示されていないと混乱を招きやすいので、以下のように運用することをおすすめします。
- Sandboxテスター数を表示上限数(約2000件)以内に収める
- 表示上限数を超える場合は、古いSandboxテスターを削除する