Kurt L.
Kurt L.

Reputation: 702

ITMS-90892: Missing recommended icon error from Apple App Store

I get this error when submitting my app to the App Store recently.

ITMS-90892: Missing recommended icon - The bundle does not contain an alternate app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro. To support older operating systems, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See

It's related to the alternate icons in the app structure and the names I think but has nothing to do with the assets catalog. In my app a user can choose and icon for the Home Screen.

I have 4 icons to choose and 4 sizes for each icon named e.g. - AA_appIcon@2x, AA_appIcon@2x~iPad, AA_appIcon@3x, AA_appIcon83.5@2x~iPad and it used to work fine, but now I get this error for the one name AA_appIcon83.5@2x~iPad. It is in the correct size 167x167, so not sure what the problem is. It just happen in the last few days, didn't happen on my previous submission a month ago.

The naming format must have recently changed or something. Is anyone able to spot the error?

This is the info.plist

<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>AA</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>AA_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
        <key>Cake</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>Cake_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
        <key>NA</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>NA_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
        <key>OA</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>OA_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>Cake_appIcon</string>
        </array>
        <key>UIPrerenderedIcon</key>
        <false/>
    </dict>
</dict>

<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>AA</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>AA_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
        <key>Cake</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>Cake_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
        <key>NA</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>NA_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
        <key>OA</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>OA_appIcon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <string>No</string>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>Cake_appIcon</string>
        </array>
        <key>UIPrerenderedIcon</key>
        <false/>
    </dict>
</dict>

Upvotes: 10

Views: 4845

Answers (3)

Ido
Ido

Reputation: 687

Based on @Warpling answer, here is everything you need to setup alternate icon correctly:

1. Create the icon files

First, you'll have to create a folder (e.g. AlternateAppIcons) inside your main project (where the info.plist file is located).

Now, inside the folder you've created, add the files with the names and sizes that described in the table:

File Name Size
[email protected] 120x120
[email protected] 180x180
IconName@2x~ipad.png 152x152
IconName@3x~ipad.png 167x167
  • I'd recommend you to use Icon Set Creator to generate all sizes, then
  • Make sure that the file names are exactly the same (case sensitive) after the @.
  • When you change IconName, make sure to change it as well in the info.plist.

2. Configure info.plist

You'll have to add this to the info.plist:

<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>IconName</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>IconName</string>
            </array>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array/>
        <key>UIPrerenderedIcon</key>
        <false/>
    </dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>IconName</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>IconName</string>
            </array>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array/>
        <key>UIPrerenderedIcon</key>
        <false/>
    </dict>
</dict>

3. Change the icon programmatically

All you have to do is to validate that the app supports alternate icons and change it:

guard UIApplication.shared.supportsAlternateIcons else { return }
UIApplication.shared.setAlternateIconName("IconName")

*You may want to create some enum helper like this.

SwiftUI

Since SwiftUI drops the requirement of info.plist, you'll have to make the declaration in a different way; search for "App Icon" in the project's Build Settings to edit the related settings.

You may take a look at Apple's new documentation, that includes also a sample project (take a look at its README.md).

You may also find this article helpful.

Upvotes: 7

Warpling
Warpling

Reputation: 2095

Here's what you need as of late 2021 if you're getting error ITMS-90890 or ITMS-90892, etc.

File Name size
[email protected] 120x120
[email protected] 180x180
IconName@2x~ipad.png 152x152
IconName@3x~ipad.png 167x167

*Note the lack of capitalization on ~ipad!

Upvotes: 12

Kurt L.
Kurt L.

Reputation: 702

Nevermind

I just renamed the icon from AA_appIcon83.5@2x~iPad.png to AA_appIcon@3x~ipad.png and the error went away and the icon picker still works from within the app.

Upvotes: 1

Related Questions