Code=3072 "The operation was cancelled" when setting alternate app icon

I was stuck with this error for quite a while and tried all sorts of things but couldn't work out what I was doing wrong. I was changing the icon from AppDelegate.application(didFinishLaunchingWithOptions:). Delaying the call with a timer as suggested above did solve it.

It is worth noting that this problem is due to UIKit trying to show a UIAlertController with the message

You have changed the icon for $(PRODUCT_NAME)

and that didn't seem to work at that point. You need to wait until a root view controller is loaded.

This is because this API is not meant to for the developer to update the icon arbitrarily, but for the user to deliverability choose one.


I was getting this error because of two reasons,

  • First(and highly not because of), I didn't do "Add Files to 'ProjectNameFoo'" by adding png file to project. Otherwise it didn't work. After that it started to see icon.
  • Secondly(and highly possible reason), I was getting this error because I was trying to change the icon in viewDidLoad. When I try with a delay like the code below it was working whatever second I gave.
override func viewDidLoad() {
    super.viewDidLoad()

    DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
        UIApplication.shared.setAlternateIconName("MyIcon")
    }
}