본문으로 건너뛰기

appstore connect 앱 스크린샷 업로드 오류를 Curl API를 통해 우회적으로 해결하기

개요

앱 미리보기에 업로드 하려는데 업로드가 되지 않았습니다.

가끔 웹 클라이언트가 먹통이 되는데요, 이 문제를 Appstore connect API를 활용해 해결해보겠습니다.

error

API 키 생성

warning

생성한 API키는 한번만 다운로드 가능합니다.

Appstore connect -> 사용자 및 엑세스 -> 키 에 들어가서 새로운 키를 생성합니다.

api

API키를 생성했으면 목록 우측에 API 키 다운로드 링크를 통해 API 키를 다운로드합니다.

Ruby script 작성

터미널을 열어 다음과 같이 루비스크립트를 작성합니다. ISSUER_ID, iss, KEY_ID, kid 를 올바는 값으로 바꿔주세요.

AuthKey_XXXXXX.p8 는 다운로드한 API 키 파일 명으로 바꾸어 주세요.

정보
  • 만료일(exp)을 늘려 주는 게 좋습니다.
  • jwt gem을 설치해야 하는 경우 root권한으로 jwt 를 설치해주세요. sudo su gem install jwt
require "base64"
require "jwt"
ISSUER_ID = "XXXX-XX-XXXXXX-XX-XXXXXXXX"
KEY_ID = "XXXXXXXX"
private_key = OpenSSL::PKey.read(File.read("AuthKey_XXXXXX.p8"))
token = JWT.encode(
{
iss: "XXXX-XX-XXXXXX-XX-XXXXXXXX",
exp: Time.now.to_i + 20 * 60,
aud: "appstoreconnect-v1"
},
private_key,
"ES256",
header_fields={
kid: "XXXXXXXXX" }
)
puts token

저장한 루비스크립트를 실행시켜 주세요.

ruby 루비스크립트명.rb
02OrHS6BAuG4mbTv7gao4W2zvybBPrImvvVTOOs2OT6pHhVs6RSQO2YVrBiAduQb3SptRgAWaQO01PRwgmyGGHCgHage5CdMXCebzSjrSeq2SCruWpNeIDkpL6hZkXxF6Bn2Xg3RTtj2uu9T6osN0Iyq7eROqCwxy1gCBnq2xOodjSsDI4XDEDUxK91XR1kstFeJxZeQ

생성한 토큰을 APPSTORETOKEN명으로 export 해줍니다.

warning

export: not valid in this context: 에러가 발생할 경우 루비스크립트를 다시 실행하여 새 토큰값으로 다시 시도해 보세요. 토큰 내에 공백이 있는 경우 문제가 있을 수 있습니다.

export APPSTORETOKEN=02OrHS6BAuG4mbTv7gao4W2zvybBPrImvvVTOOs2OT6pHhVs6RSQO2YVrBiAduQb3SptRgAWaQO01PRwgmyGGHCgHage5CdMXCebzSjrSeq2SCruWpNeIDkpL6hZkXxF6Bn2Xg3RTtj2uu9T6osN0Iyq7eROqCwxy1gCBnq2xOodjSsDI4XDEDUxK91XR1kstFeJxZeQ

appStoreVersionLocalizations 값 얻기

사파리 또는 구글 크롬 개발자 콘솔을 띄워든 상태로 appstore connect -> 문제가 되는 앱 으로 이동합니다.

콘솔에서 500 RESPONSE ERROR 를 확인할 수 있습니다.

에러가 발생한 주소의 뒤 X부분 (...[appStoreVeresionLocalization]=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) 복사해주세요.

XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 이 appStoreVersionLocalizations 값입니다.

appstoreversion

모든 스크린샷 제거

다시 터미널로 돌아와 아래와 같은 명령어를 실행해 줍니다. XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX은 appStoreVersionLocalizations 값입니다.

curl 'https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/appScreenshotSets'  --Header "Authorization: Bearer $APPSTORETOKEN"

아래와 같이 appScreenshotSets을 확인할 수 있습니다.

{
"data" : [ {
"type" : "appScreenshotSets",
"id" : 아이디,
"attributes" : {
"screenshotDisplayType" : "APP_IPAD_PRO_3GEN_129"
},
"relationships" : {
"appScreenshots" : {
"links" : {
"self" : "https://api.appstoreconnect.apple.com/v1/appScreenshotSets/아이디/relationships/appScreenshots",
"related" : "https://api.appstoreconnect.apple.com/v1/appScreenshotSets/아이디/appScreenshots"
}
... 이하생략

다시 appstore connect에 들어가서 다시 스크린샷을 업로드 해봅니다.

한번 해서 해결되지 않으면 여러번 시도해 보세요. 저는 3번째 시도에 성공했습니다.

참고 자료

원글에서 조금 내용을 보강했습니다.

웹 클라이언트에서 안되면 API를 쓰면 되지 않냐? 라는 생각을 하다니.. 참 똑똑한 사람들이 많네요..