審査は通ったのに App Store に出ない — 配信地域(App Availability)を App Store Connect API で後追い設定する
Mac App Store に提出した TEI Scanner が、審査を通過したのに App Store に表示されず『配信から削除されました』と出ていました。原因は配信地域(App Availability)が一度も設定されていなかったことです。App Store Connect API で症状を切り分け、v2 の appAvailabilities エンドポイントで配信地域を後追い設定するまでの記録です。
macosappstoreconnectapimac-app-storetroubleshooting
台本(フルテキスト)
動画の掛け合いを書き起こしたものです。音声を再生しづらい場合はこちらをお読みください。
オープニング
- 審査通過後も App Store に表示されない謎の症状
- 原因は配信地域(App Availability)の未設定
- はう
- こんにちは。今日はどんなトピックを紹介するの?
- めたん
- Mac App Store に提出したアプリが審査を通過したのに App Store に表示されなかった問題と、その解決方法を紹介しますね。
- はう
- 審査が通れば公開されるんじゃないの?
- めたん
- そう思いがちですが、App Store でアプリが届くまでには「審査ステータス」「公開タイミング」「配信地域」という独立した 3 つの軸があります。
- はう
- それぞれ何が違うの?
- めたん
- 審査ステータスは審査が通ったか、公開タイミングは自動か手動かの設定、配信地域はどの国で買えるかです。今回は 3 つ目の配信地域がゼロのままでした。
症状の切り分け
- App Store Connect API で appAvailabilityV2 を確認
- NOT_FOUND = 配信地域が一度も作成されていない
- はう
- どうやって問題の原因を特定したの?
- めたん
- App Store Connect API で apps/{app_id}/appAvailabilityV2 を GET して、配信地域リソースの存在を確認しました。
- はう
- 何が返ってきたの?
- めたん
- 404 の NOT_FOUND が返ってきました。これは URL の綴り間違いではなく、リソース自体が存在しないことを意味します。配信地域が一度も設定されていないと確定しました。
- はう
- どうして設定されていなかったの?
- めたん
- API 中心でアプリを提出する流れでは、appAvailabilities を明示的に呼ばない限り配信地域は設定されません。Web UI 新規作成時のような地域選択の強制がないためです。
配信地域の後追い設定
- POST /v2/appAvailabilities で配信地域を作成
- included の id は ${local-id} 形式のプレースホルダが必要
- はう
- どうやって配信地域を設定したの?
- めたん
- territories エンドポイントで 175 か所の地域一覧を取得して、POST /v2/appAvailabilities で全地域を available: true として一括登録しました。
- はう
- エラーは出なかったの?
- めたん
- 2 回エラーが出ました。1 回目は v1 の URL を使っていて PATH_ERROR。2 回目は included の id に地域コードをそのまま入れたら、${local-id} 形式にしないといけないとエラーが出ました。
- はう
- v1 と v2 で違うの?
- めたん
- 参照は v1 のリレーション経由で引けますが、作成は v2 エンドポイントにしかありません。この非対称に注意が必要です。
検証と冪等性
- territoryAvailabilities で 175 件 available を確認
- appAvailabilityV2 GET で既存検出しスキップ
- はう
- 設定後にちゃんと動いていることを確認できるの?
- めたん
- appAvailabilities/{app_id}/territoryAvailabilities を GET して available: true の件数を数えたら 175 件すべてが配信可能になっていました。App Store Connect の管理画面にも反映されます。
- はう
- スクリプトを複数回実行しても大丈夫なの?
- めたん
- appAvailabilityV2 の GET で既に存在すれば何もしない、404 なら作成する、という冪等な実装にしています。
- はう
- availableInNewTerritories を true にしておくメリットは何?
- めたん
- Apple が新しい App Store の地域を追加したとき、自動的にその地域でも配信対象になります。Web UI の既定挙動と同じです。
まとめ
- 配信地域は審査提出物に含まれないため、API 中心の提出フローで抜け落ちやすい
- NOT_FOUND と PATH_ERROR で切り分け、v2 エンドポイントで作成
- はう
- 今日のポイントをまとめてほしいわ。
- めたん
- App Store での公開には「審査」「公開タイミング」「配信地域」の 3 軸があります。API 中心で提出すると配信地域が未設定のまま審査を通過できてしまいます。
- めたん
- appAvailabilityV2 の GET で NOT_FOUND なら未設定と確定でき、POST /v2/appAvailabilities で後追い設定できます。included の id は ${local-id} 形式が必要です。
- はう
- 審査通過と公開が別物というのがポイントね。
- めたん
- そうですね。配信地域設定はアプリ提出フローの中でつい見落としがちなので、意識的に確認することをお勧めします。
- はう
- よく分かったわ。ありがとう!