App Store のスクリーンショットが弾かれる原因まとめ:寸法・アルファ・IAP・iPad
App Store Connect のスクショ審査は妙に厳しい。受付寸法、アルファチャンネル禁止、IAP 審査スクショの別バリデータ、13インチ iPad 必須エラーの正体を、実際に踏んだ順にまとめる。
App Store Connect にスクリーンショットを上げると、画像そのものは正しく見えるのに「追加できません」と弾かれることがある。寸法・透過・アップロード先のバリデータ違いと、原因が分かれている。実際に踏んだ4つをまとめる。
1. 受付寸法を間違える
事象
スクショをアップロードすると「寸法が正しくありません」で弾かれる。実機で撮ったスクショをそのまま上げると起きやすい。
原因
App Store Connect が受け付ける iPhone スクショの寸法は決まっている。新しめの Pro 機種でも、実機のスクショは 6.3 インチ(1206×2622)で撮れてしまい、その寸法は受け付けられない。
確実に通ったのは次の3つだった。
- 6.9 インチ:
1320×2868 - 6.7 インチ:
1290×2796 - 6.5 インチ:
1242×2688
6.5 インチの旧寸法 1284×2778 は、環境によっては弾かれた。アスペクト比が近い寸法どうしでも、受付値の表に載っていないと通らないことがある。Apple が受け付けるサイズは時期によって変わるので、提出時点の表で確認するのが安全だ。
解決策
撮れたスクショを受付寸法へリサイズする。6.3 インチ(1206×2622)と 6.9 インチ(1320×2868)はアスペクト比がほぼ同一(差は 0.1% 未満)なので、リサイズしても歪まない。
sips -z 2868 1320 shot.png --out shot_6_9.png
ただし sips でのリサイズには次の落とし穴がある。
2. アルファチャンネルが残って弾かれる
事象
リサイズしたスクショを上げると「画像にアルファチャンネルや透過を含めることはできません」で弾かれる。見た目は不透明な普通のスクショなのに通らない。
原因
sips -z でリサイズした PNG はアルファチャンネルを残す。確認するとはっきり分かる。
sips -g hasAlpha shot_6_9.png
# hasAlpha: yes ← これだと弾かれる
App Store のスクショはアルファチャンネルを含められない。中身が透過していなくても、チャンネルが存在するだけで弾かれる。
解決策
黒背景にフラット化して RGB へ落とす。Python(Pillow)が確実だ。
from PIL import Image
im = Image.open("shot_6_9.png").convert("RGBA")
bg = Image.new("RGB", im.size, (0, 0, 0))
bg.paste(im, mask=im.split()[3]) # アルファをマスクに合成
bg.save("shot_flat.png")
これで hasAlpha: no の RGB 画像になる。
3. IAP の審査スクショは本体より厳しい
事象
本体スクショ枠が受け付けた寸法(例:1284×2778)の画像を、アプリ内課金(IAP)の審査スクショ欄に上げると「寸法が正しくありません」で弾かれる。同じ画像なのに、片方は通って片方は弾かれる。
原因
本体スクショと IAP 審査スクショは、別のバリデータを通っている。本体側がゆるく受け付けた寸法でも、IAP 側はより狭い条件で弾く。
解決策
IAP の審査スクショは最初から本体と同じ厳しめの条件で作る。1242×2688・RGB・アルファなしで用意しておけば、両方の欄を通る。本体用と IAP 用で画像を作り分けず、厳しい方に合わせて1種類にしておくと事故らない。
4. 「13インチ iPad のスクショが必要」の正体
事象
iPhone 専用のつもりなのに、「13インチ iPad のスクリーンショットが必要です」と要求され、提出できない。iPad 版を作った覚えはない。
原因
ビルドが iPhone と iPad の両対応(ユニバーサル)になっている。
- ネイティブ:
TARGETED_DEVICE_FAMILY = "1,2"(1=iPhone、2=iPad) - Expo:
app.jsonのios.supportsTablet: true
このどちらかが有効だと、App Store Connect は iPad 13 インチ(2064×2752)のスクショを必須にする。デバイスファミリーはビルドに焼き込まれるので、メタデータをいじるだけでは消えない。
解決策
iPhone 専用にするなら、デバイスファミリーを "1" に戻す。
- ネイティブ:
TARGETED_DEVICE_FAMILY = "1" - Expo:
app.jsonのios.supportsTablet: false
そのうえでビルド番号を上げて再ビルドする。焼き込みなので、再ビルドしないと iPad 要求は消えない。iPhone 専用にしても、iPad ユーザーは拡大表示でそのまま使える。
補足
- スクショ周りのエラーは「画像が悪い」より「寸法・チャンネル・アップロード先」のどれかであることが多い。中身を疑う前に
sips -g pixelWidth -g pixelHeight -g hasAlphaで機械的に確認すると早い - 受付寸法は時期で変わる。提出時点の App Store Connect の表を一次情報として確認する
※ 本記事にはアフィリエイトリンクが含まれます。