앱 미리보기에 업로드 하려는데 업로드가 되지 않았습니다. 가끔 웹 클라이언트가 먹통이 되는데요, 이 문제를 Appstore connect API를 활용해 해결해보겠습니다.
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 해줍니다.
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 값입니다.
모든 스크린샷 제거
다시 터미널로 돌아와 아래와 같은 명령어를 실행해 줍니다. 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"
}
... 이하생략
appScreenshotSets 아이디를 확인했습니다. appScreenshotSets을 모두 삭제해줍니다.
curl -X DELETE 'https://api.appstoreconnect.apple.com/v1/appScreenshotSets/아이디' --Header "Authorization: Bearer $APPSTORETOKEN"
다시 appstore connect에 들어가서 다시 스크린샷을 업로드 해봅니다.
한번 해서 해결되지 않으면 여러번 시도해 보세요. 저는 3번째 시도에 성공했습니다.
- appstore connect API - upload an app screenshot
- App screenshots can't be uploaded (stuck on 10%)
- App Store Screenshots - "Screenshot uploads in progress" Error / appScreenshotSets Error
- App store connect API - delete an app screenshot
원글에서 조금 내용을 보강했습니다.
웹 클라이언트에서 안되면 API를 쓰면 되지 않냐? 라는 생각을 하다니.. 참 똑똑한 사람들이 많네요..
'프로그래밍 > React-Native <JSX>' 카테고리의 다른 글
[React-Native] react-native-webview 안드로이드 플랫폼에서 웹뷰를 출력하지 않는 문제 (0) | 2023.02.12 |
---|---|
[React-Native] react-native-google-singin 앱 심사에 통과하기 위한 앱 서명 인증서(SHA-1) 키 적용하기 (0) | 2023.02.12 |
[React-Native] 개발할 때 알면 좋은 팁 (0) | 2023.02.12 |
[React-Native] 안드로이드 커스텀 폰트 출력 문제 IncludeFontPadding 해결하기 (2) | 2023.02.12 |
[React-Native/오픈소스활동] gradle unsupported claass file major verion 62 error 해결하기 (0) | 2023.02.12 |