App Store Screenshots - "Screenshot uploads in progress" Error / appScreenshotSets Error
Asked Answered
S

4

10

This is going to be self-answered question. This issue is wasting days and whole weeks of developer time.

See the screenshots below to see what the problem is. Apple developer forum doesn't provide you any answers.

The issue is:

Apple App Store shows no screenshots because of App Store's web interface issue. When you try to upload new screenshots it does not let you do that. It throws a STATE_ERROR with a message of 'Screenshots already exists!'.

App Store Shows No Screenshots even when previously uploaded screenshots exist

Console shows UNEXPECTED_ERROR from App Store API

AppScreenshotSets throwing a 500 Error

Stockyard answered 10/8, 2022 at 22:22 Comment(0)
S
11

The way you resolve this is to use the App Store Connect API to delete the AppScreenshotSets for all your "Preparing for submission" review version.

Steps to follow:

  1. Generate an API keys. Go to "App Store Connect" > "Users & Access" > "Keys" (tab).

  2. Use the ISSUER_ID, KEY_ID, AUTH KEY FILE (.p8 file) to create time-sensitive token using the ruby script below:

    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
    
  3. Run the script with ruby

    ruby generateTokenFromCredentials.rb
    
  4. Export the time sensitive token in terminal:

    export APPSTORETOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
  5. [OPTIONAL STEP] Get additional information about your app store app

    export APPSTORETOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
    //List user
    curl 'https://api.appstoreconnect.apple.com/v1/users'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
    //List Apps
    curl 'https://api.appstoreconnect.apple.com/v1/apps'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
    
    //Get App Store Versions
    curl 'https://api.appstoreconnect.apple.com/v1/apps/<APP_STORE_ID_NUMBER>/relationships/appStoreVersions'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
    
    //List All App Store Version Localizations for an App Store Version
    curl 'https://api.appstoreconnect.apple.com/v1/appStoreVersions/<APP_STORE_ID_NUMBER>/appStoreVersionLocalizations'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
    
    //Review submissions
    curl 'https://api.appstoreconnect.apple.com/v1/apps/<APP_STORE_ID_NUMBER>/reviewSubmissions'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
    
    
    //Pre release versions 
    curl 'https://api.appstoreconnect.apple.com/v1/apps/<APP_STORE_ID_NUMBER>/preReleaseVersions'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
    
    //Get App Info
    curl 'https://api.appstoreconnect.apple.com/v1/apps/<APP_STORE_ID_NUMBER>/appInfos'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
  6. Find out the appStoreVersionLocalizations from the Google Chrome or Safari Console by going to the request that threw the 500 Error.

    curl 'https://appstoreconnect.apple.com/iris/v1/appScreenshotSets?include=appScreenshots&filter\[appStoreVersionLocalization\]=XXXXX-XX-XX-XX-XXXXXXX' \
      -H 'sec-ch-ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"' \
      -H 'x-csrf-itc: [asc-ui]' \
    

    Take appStoreVersionLocalization from the URL

  7. List all the appScreenshotSets and get the ids:

    //List all relavant App Screenshots
    curl 'https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations/21XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/appScreenshotSets'  --Header "Authorization: Bearer $APPSTORETOKEN"
    
  8. DELETE EVERY LAST ONE OF THEM

    //Delete Screenshots Sets
    curl -X DELETE 'https://api.appstoreconnect.apple.com/v1/appScreenshotSets/<XXXXX-XXX-XXX-XX-XXXX>' --Header "Authorization: Bearer $APPSTORETOKEN"
    

Now you can go back to the App Store Connect web interface and continue your uploads.

Stockyard answered 10/8, 2022 at 22:22 Comment(0)
O
1

Easiest solution is:

  1. Just Change Version name or edit some text.
  2. You can see Submit button is enabled before click submit button upload screenshots and click "submit" button. Add to review button also working fine then you can release your app successfully.
Ottoman answered 7/4, 2023 at 20:5 Comment(2)
Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.Darlenedarline
Of all the times this has been asked and answered over the years this is the one that worked for us. We removed the description which gave us the missing description error. Then added the description back in. Success.Cagey
E
1

Me too I was having problem uploading with Safari for hours then I tried in brave browser and finally could upload.

Everest answered 30/3, 2024 at 22:59 Comment(1)
I spend two days.... thanks. Chrome still have sense )Spurt
O
0

I exported some screenshots to png fileformat using 8bpc RGB pixel format with GIMP. Those screenshots were accepted by the AppStore as of end of 2023. What pixel format the images used before the story however doesn't tell as it was set to 'automatic pixel format'.

Oracular answered 28/12, 2023 at 4:57 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.