iOS publishing: The missing manual

Hey guys, I’m trying to be helpful here, and writing out the steps that are either missing or not clear in GS' iOS cookbook. PLEASE correct me, or add your own experiences below. (January 2023)


So my big questions are, when coming back to this stuff after a long time,

To publish a second (or third) app, do I need all the of the steps in the Cookbook ?

To update an app, what parts of the Cookbook are relevant?

To move to a new computer, what do I need to renew/move?

Where is the Cookbook out of date (or in one case misleading)?


My first step was to publish a new app, so as to be able to follow the Cookbook as closely as possible. Then I went back and updated some of my existing apps. When it works (finally) it’s pretty slick. But getting to the first successful delivery to Apple took 12 hours straight experimentation, and I had already tried for several days in September. Here’s what I missed:


GS Mac Cookbook: Apple Publishing

  1. Developer, AppStore and Certificates

I am already an apple registered developer. I downloaded the latest version of Xcode fresh to a new computer.

‘Member centre’ no longer looks like the screenshot of course, but I found the right page. 

What type of certificate do I need?

I’m just interested in Distribution and uploading to the App Store, (since the GS demo tools are so slick that I’ve never found a difference between build and Viewer performance).

I only need one Distribution certificate, to identify myself as a legitimate developer/distributer. I can then sign all my apps with the same certificate. (Then the App Store might also list “more apps by this developer”?)

Having said that, I have a new computer, and tried to migrate / re-download my old Certificate. When nothing worked, I created a CSR from my new computer and created a new Certificate. I chose iOS Distribution (I don’t know if ‘All’ would also have worked) 

A major headache was that the intermediate signing certificate link IS wrong. (Never mind the: “if you need to reinstall.. “ etc, you DO need to install the right one ) My distribution certificate requires AppleWWDRCAG3.cer - notice the G3

How to find this out? Open Keychain Access, click System on the left, you should see your certificate there. ‘Left-click’ it and choose Get info. Organisational Unit is G3, this is why I need a G3 certificate.

From here:  https://www.apple.com/certificateauthority/

Choose: Worldwide Developer Relations - G3


2. Creating an App Identifier

Obviously - nothing like the screenshots

Prefix? Suffix? Never mind

Massive list of ‘capabilities’ - lets hope we don’t need any of them 

This step is one per App. Publishing a second or third app? You need one identifier for each of them, but not for an update.


3. Provisioning profiles

I have previously fallen over at this point because they only last one year. Mine were always listed expired and I thought I had to create new ones. I didn’t realise you can click ‘Edit’ and when you save.. !magic! the certificate is good again for the next year. You can amend, amongst other things, the Certificate used to sign the app - vital because I made a new certificate in the previous step.

The provisioning profile should have no spaces in the name

Incorrect recommendation in step 7. This has floored me many times. 

(Why did I never write ‘Note-to-self’ before now…?)


4. Publish Game to iOS

Loading screens and icons can’t be uploaded in Safari. Try Chrome instead.

Don’t use 0.0.1 for a build number, it has to start with at least ‘1.’

So RC build? Or Build App? (I used RC build and it worked)


Signing the app - here’s where we find out if stuff in the first three steps was wrong. After lot of experimentation:

Certificate not trusted etc, this was really about wrong intermediates. 

No dev ID associated - was fixed by removing spaces in the name of the profile.


5. Preparing an App for submission

Cookbook info seems clear.

You can only have one version number in ‘Prepare for submission’. 

It must match the version number you put in on the publishing page.

But you can’t upload two packages with the same build number, the build number has to change with every upload. 


6. Submitting an app to the App Store


I downloaded Transporter App and followed these steps, directly from the forums: 

Create a folder; rename it ‘Payload’; drag your app file in there; compress/zip it; change the extension of the compressed file to .ipa; when asked if you’re sure you want to change the extension, click yes.

Make sure you use capital P for Payload.

The ipa file is the one to submit to the store, not the app file. 

I got one error:

App icon must not have alpha channel - fix this in the publishing step.

It takes a while to process. So when you can’t see it immediately in App Store Connect, go have a cup of coffee and wait for an email saying your build has been processed.


Extra Topic. Reject and re-submit:

If Apple rejects your app, it’s not immediately obvious what to do next. There's no plus sign for a new version.

You can click on App review (even if you’ve already read the reasons in an email) and then it may be possible to edit your submission and resubmit. Or, on the main page of the app, increment the version number and try again. You will need to change the version number on the GS publishing webpage to match. Increase the Build number at the same time.


========


So… to answer the questions at the top, to publish a new app under the same developer name, you need a new app Identifier, and a new provisioning profile, but not a new Developer Certificate (though making a new one is a common troubleshooting step. If you do this you need to edit the provisioning profiles to reference the correct certificate.) 


To update an app, you don’t need anything new, on the signing side except to check the provisioning profile is not expired (in which case edit and save, then download and double-click it again). If you’re installing or updating Xcode, you should check the intermediate certificates as explained above. In Appstore Connect, you need a new version number, (and maybe some extra screenshots). 

You also need to be able to edit a website sufficiently to put up a privacy policy somewhere. It doesn’t have to be very fancy, but must contain the correctly spelled names of all your apps. Stating “None of the apps from this developer collect data…” is apparently not enough.


I hope this is useful - thank you to Gamesalad for keeping a great product going in the face of Apple’s constant changes and unnecessary opacity :-) Throw in your comments, experienced publishers! I only do this once every two or three years, and it's meant to be a guide to the pitfalls. But this also means I may have missed or misunderstood stuff and am very happy to be corrected.

Comments

  • uptimistikuptimistik Key Master, Member, Sous Chef, PRO Posts: 297

    Great work putting this together! The app store changes so often now, that this is super helpful to the community.

    GameSalad Templates and Custom Development at the Official Marketplace: http://gshelper.com

  • pinkio75pinkio75 Member, PRO Posts: 1,216

    This guide is very useful;I also don't publish for medium-long periods of time and when I update or publish a new app on Apple it's always a challenge!! expired certificates, expired signing keys etc... etc...

    But couldn't it be like on android? with a unique key store for all apps?

    Anyway thanks again for this cookbook guide!

  • RedRoboRedRobo Member, PRO Posts: 682
    edited January 2023

    Thank you so much @marionwood for putting this together. It will help me and many others I'm sure.


    I'm hoping at some point @adent42, we can get a single point of reference for all the latest updated publishing info? Maybe some kind of wiki that trusted users can edit and update to ease the burden on you guys?


    I'm about to embark on iOS publishing after being out of the loop for a couple of years, looks like some things changed.

    I just had an email saying I have 2 certificates which will no longer be valid in 30 days, they are:

    Developer ID installer and DeveloperID application (Can't even remember creating them! 😫)


    My question is; do I need these for iOS appstore publishing? If not, which ones do I need?


    Thanks again for the thread!

  • uptimistikuptimistik Key Master, Member, Sous Chef, PRO Posts: 297

    @RedRobo The developer certificates are for testing, Distribution for live apps. :) hope that helps!

    GameSalad Templates and Custom Development at the Official Marketplace: http://gshelper.com

  • RedRoboRedRobo Member, PRO Posts: 682
    edited January 2023

    Thanks @uptimistik. The problem is which developer/distribution certificates?

    I'm being asked to renew the bottom 2. Surely the top 2 are the ones needed? Or do I need both???

    I find this so confusing, if you have the top 2 why would you ever need 3 or 4? Are they for earlier versions of Xcode? If so why don't they say? 😫

    Logic would tell me it's 3 and 4 that I need? 😭

  • ArmellineArmelline Member, PRO Posts: 5,363

    If you want to test your app with TestFlight or submit it to the store, go with Apple Distribution or iOS Distribution. I haven't used anything but those in years.

  • RedRoboRedRobo Member, PRO Posts: 682
Sign In or Register to comment.