Stickers for iMessage like a part an app

Yes, stickers.xcassets it’s like independend application but packaging into main IPA.
I cant build it manualy in Defold. Because I have I/O error with icons.

Now I try to add stickers.xcassets to the iap by handa, and then re-sign IPA.
But I recieve an error mail.

Now I found that I should use exportOptionsPlist (I don’t know what is it,just start to investigate what is it and how to use it)

For app signing I am use codesign -f -s …

1 Like

I wasted whole day for trying and nothing (
Application loader upload ipa but then after post processing I receive email from apple with error.

Do you know what is the right way to sign the ipa by hands, pls?
(I am not sure that it is a problem, but i want to try all variants)

exportOptionsPlist - wrong way, it’s just an option for export archive of xcode project using command line.

after 34 builds and attempts to upload those to app store - i give up.
All attempts was fail.
I don’t know how to sign and upload Defold build with stickers to app store.

My algorihm was:

  1. Build game.ipa
  2. Terminal: unzip game.ipa
  3. Terminal: codesign -d --entitlements :- Payload/game.app/
  4. save Entitlements.plist with result of 3
  5. Make xcode project with stickers
  6. Make an archive of the project
  7. export archive for the appstore
  8. extract PlugIns folder with stickers from the ipa (p7)
  9. copy PlugIns forlder to our game.app (p2)
  10. Terminal: codesign -f -s "my cert" --entitlements Entitlements.plist Payload/game.app/
  11. Terminal: zip -qr "game.ipa" Payload

after all that game.ipa was loaded to the store using Application Loader without errors, but after few minutes (postprocessing on the apple server) I recieve an email:

Dear developer,

We have discovered one or more issues with your recent delivery for “Your game name”. To process your delivery, the following issues must be corrected:

Invalid iMessage App - Your iMessage app contains an invalid sticker pack. The app may have been built or signed with non-compliant or prerelease tools. For more information, go to developer.apple.com.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team

If somebody know where is my mistake or can help me with it, would be great.

1 Like

@sven maybe you can help me with my issue?

We’re unfortunately down to a skeleton crew in the Defold team with most people away on vacation. Sven is away on vacation. Mathias is here but he’s probably swamped with work already. Please summarize all the info you have on this and send it to me (Bjorn.ritzl@king.com). Detailed steps of the work involved. What you’ve tried so far. Links to official docs. Any assets I might need. And so on.

I’m on vacation visiting some relatives, but I’ve brought my laptop and I might have some time to spare.

2 Likes

Today was 20 more attempts to upload build that contains stickers. Without positive results.
I hope Apple do not banned me for a frequent uploads =)

@britzl thank you, I sent all what i know and what i have.

1 Like

I tried to create question in StackOverflow https://stackoverflow.com/questions/45188401/trying-to-add-stickers-to-existing-ipa
Pls vote, I hope someone can help me… =(

1 Like

Hey! I know nothing about stickers and very little about xcode and bundling, but I read through your steps and was curious about copying the plugins folder. Are you sure there wasn’t anything in the stickers archive that said something about the plugins? Like in a plist/manifest file. I would expect entries describing the contents of the IPA, e.g. stickers. Maybe there is meta-info you need to bring over to the plist/manifests of the game?

Reasons I can think of for the error message:

  • There was a sticker pack that wasn’t described in manifests
  • The sticker pack is not “complete”, i.e. the plugins folder is not enough

Things I would try to debug the problem:

  • Eliminate signing issues: do the steps except 5 - 9, to make sure that the signing works when stickers are not involved
  • Eliminate Defold issues: Make a new empty ipa in xcode, and try to move the stickers over to that app
3 Likes

Good ideas. I’ll try it. Thank you.

Just tried to do the following:

  1. Create new game app in xcode. And upload to app store (processing done without errors)
  2. Pack it like game.ipa
    Made all next steps (but add MessagesApplicationExtensionSupport folder too):

2 Terminal: unzip game.ipa
3. Terminal: codesign -d --entitlements :- Payload/game.app/
4. save Entitlements.plist with result of 3
5. Make xcode project with stickers
6. Make an archive of the project
7. export archive for the appstore
8. extract PlugIns folder with stickers from the ipa (p7)
9. copy PlugIns forlder to our game.app (p2)
10. Terminal: codesign -f -s “my cert” --entitlements Entitlements.plist Payload/game.app/
11. Terminal: zip -qr “game.ipa” Payload

Upload to app store, and it’s works. Processing done without errors.

looks like problem in info.plist of defold build. I am using plist from bob.jar 1.2.108 but with changed ios minimum version to ios 10

Plist contains many different parameters (BuildMachineOSBuild, DTPlatformBuild, DTPlatformName, DTPlatformVersion, DTSDKBuild etc)
I am not sure that I can change them without any problem for build.

1 Like

I think it’s worth doing the signing step too, just to make sure that works with the defold ipa at all.

Done. And it works.

I think the reason is in difference between in plist stickers and ipa (sdk version, for example or something like this)

2 Likes

Good news! The bad news is that as you said in the other post, the key is probably a difference in the new plist you received from xcode and the one you used from bob, and that is a fucking boring problem to investigate. :cry: You can send them to me and I will take a look… :weary:

2 Likes

@Mathias_Westerdahl told that he made an update of used SDK

If Defold using latest sdk, maybe you have to update plist in accordance of SDK?

@Ragnar_Svensson What exactly plists i should to send you? 3 plists, right?

  1. plist that i using in defold project now
  2. plist that used in stickers
  3. plist from experemental app (where I added stickers sucessfully)

Yes, thanks!

Apple store processing done successfully.

I change next parameters in plist to parameters like in stickers app:

 <key>BuildMachineOSBuild</key>
        <string>16F73</string>

<key>DTPlatformBuild</key>
        <string>14E8301</string>

 <key>DTPlatformVersion</key>
        <string>10.3</string>

 <key>DTSDKBuild</key>
        <string>14E8301</string>

 <key>DTSDKName</key>
        <string>iphoneos10.3</string>

 <key>DTXcode</key>
        <string>0833</string>

 <key>DTXcodeBuild</key>
        <string>8E3004b</string>

Minimum ios version should be :

 <key>MinimumOSVersion</key>
        <string>10.0</string>

And I added next key to solve issue with UI components for ipad pro with multitasking:

        <key>UIRequiresFullScreen</key>
        <true/>

I am not sure that I have to change all this parameters (maybe I need to change just one or two) but after more than one hundred builds I have no patience to check one by one.
I hope my hack by hands of this parameters did not affect on the build.

Thank you @Ragnar_Svensson for your help.

UPD:
would be great to fix png ios error:

UPD2:
I wrote an article to my blog, maybe it will be useful for somebody (sorry, only in russian, try to use google translate) http://agulev.com/dobavlenie-stikerov-v-gotovyj-ipa/

4 Likes

Fantastic! It would be awesome to find a way to streamline this process. Perhaps into a python script or something.

1 Like

I am use this shell script - it’s enough for me:

unzip *.ipa
codesign -d --entitlements :- Payload/*.app/ > Entitlements.plist
rm *.ipa
rm .DS_Store
rm -r Payload/*.app/_CodeSignature
unzip -o ../stickers/*.ipa -d ../stickers
cp -R ../stickers/MessagesApplicationExtensionSupport/ MessagesApplicationExtensionSupport
cp -R ../stickers/Payload/*.app/PlugIns Payload/*.app/
codesign -f -s "YOUR_CERTIFICATE" --entitlements Entitlements.plist Payload/*.app/
rm -r Entitlements.plist
zip -qr "Game_with_stickers.ipa" *

I like to make automatisation and sometimes it’s more interesting than make games. But It is necessary to be able to stop in time.

4 Likes

Small update:
Application version can be less than sticker version (less than 10.0). That mean you can set up minimum ios version in your application 6.0 or 7.0 and still use stickers from 10.0

2 Likes