Recently I have been working on an iMessage Sticker Pack app and I faced few issues that are somehow hard to understand immediately.
Stickers are not loading
You know how easy is to build a sticker pack, there is no coding involved. So the first thing I did was to open Xcode 13, drop the stickers into the assets catalog and then build the app to try it out.
With my big surprise this was the result, very different from a PoC I built months ago with Xcode 12.x.
So I looked at the logs and I got few errors
2021-12-07 12:15:59.105809+0100 Test StickerPackExtension[9138:869491] Failed to inherit CoreMedia permissions from 9135: (null)
2021-12-07 12:15:59.152509+0100 Test StickerPackExtension[9138:869451] Writing analzed variants.
2021-12-07 12:15:59.155525+0100 Test StickerPackExtension[9138:869451] Writing analzed variants.
2021-12-07 12:15:59.227224+0100 Test StickerPackExtension[9138:869451] [PPT] Error creating the CFMessagePort needed to communicate with PPT.
On top of that sometimes I got the most strange bunch of errors, mostly from MobileSMS SDK, that I will avoid to paste here as they are not useful.
In this case, the deadly combination was Xcode 13 and iMessage Stickers Pack app because there is a hidden requirement to allow you to run the app and see the stickers.
You must add the app icons otherwise nothing will load, no matter how many times you try. Unless, of course, your project was created with Xcode 12 and you go back running it on that version. Impossible thing to do if you upgraded your Mac to Monterey as it discontinue Xcode 12.
Errors and warnings uploading the app to the AppStore
Once I solved the issues above and completed the app then I uploaded to the AppStore and with my big surprise I got the following error and warnings:
"Invalid Bundle. You've included the "arm64" value for the UlRequiredDeviceCapabilities key in your Xcode project, indicating that your app may only support 64-bit. Your binary, 'XXXXXXXXStickerPack', must only contain the 64-bit architecture slice."
As you can see there are also few warnings:
"Architecture incompatible with MinimumOSVersion. The app bundle at 'XXXXXStickerPack.app' specifies a MinimumOSVersion of '13.0' but contains a 32-bit architecture that is unsupported on iOS 12 and later."
"Apple silicon Macs support issue. The app has LSApplicationLaunchProhibited set to true. This is not supported on Mac."
Ignore all online suggestions to set UlRequiredDeviceCapabilities key for all the targets of all your plists. That’s not going to solve the issue.
Everything is related to the same “hidden” problem that, as I said earlier, is not easy to spot. Initially I set the project minimum deployment target to iOS 12 then to iOS 13 but as you can see above it didn’t work until I realised what was wrong by reading it again.
Basically the solution is that you must set the minimum deployment target to iOS 10.0 for an iMessage Stickers Pack.
Enjoy