Fork us on GitHub

iOS Certificate Wizard

So you have finished your app and tested it on the simulator....
iOS Certificate Wizard

iOS Certificate Wizard

So you have finished your app and tested it on the simulator. Everything looks good. You’re now ready to proceed with testing on your iPhone. You select the "Send iOS Debug Build" menu item and wait for the build server to work its magic, but then you’re faced with a notice that iOS builds require a valid certificate and provisioning profile. What a hassle!

If you’ve done any iOS development (not just Codename One) I’m sure you’ve hit this speed-bump before. You can’t just test your app on your iPhone. You have to jump through a series of hoops imposed by Apple before you get the privilege of testing your app on your phone. You need to create an App ID with the necessary permissions, generate a certificate signing request, download your certificates, generate mobile provisioning profiles to register your iPhone to be able to test your app. And finally, you have to export your certificates into a format that can be used in Codename One. If you have a Mac, this process is annoying at best. If you don’t, then this process might be your show-stopper.

Personally, I find the iOS certificate process to be the single most painful part of app development. That is why I’m happy to announce that the next version of the Codename One plugin will include a wizard that generates all of these things for you with just a few mouse clicks.

How it works

To generate your certificates and profiles, simply open your project’s properties, and click on "iOS" in the left menu. This will show the "iOS Signing" panel that includes fields to select your certificates and mobile provisioning profiles.

Netbeans iOS Signing properties panel

If you already have valid certificates and profiles, you can just enter their locations here. If you don’t, then you can use the new wizard by clicking the "Generate" button in the lower part of the form.

Logging into the Wizard

After clicking "Generate" you’ll be shown a login form. Log into this form using your iTunes Connect user ID and password. NOT YOUR CODENAME ONE LOGIN.

image::/img/blog/ios-cert-wizard-2-login.png[Wizard login form]

Selecting Devices

Once you are logged in you will be shown a list of all of the devices that you currently have registered on your Apple developer account.

Devices form

Select the ones that you want to include in your provisioning profile and click next.

After selecting devices

If you don’t have any devices registered yet, you can click the "Add New Device" button, which will prompt you to enter the UDID for your device.

Decisions & Edge Cases

After you click "Next" on the device form, the wizard checks to see if you already have a valid certificate. If your project already has a valid certificate and it matches the one that is currently active in your apple developer account, then it will just use the same certificate. If the certificate doesn’t match the currently-active one, or you haven’t provided a certificate, you will be prompted to overwrite the old certificate with a new one.

Prompt to overwrite existing certificate
Prompt to overwrite other certificate

The same "decisions" need to be made twice: Once for the development certificate, and once for the Apptore certificate.

App IDs and Provisioning Profiles

The next form in the wizard asks for your app’s bundle ID. This should have been prefilled, but you can change the app ID to a wildcard ID if you prefer.

Enter the app bundle ID

Installing Files Locally

Once the wizard is finished generating your provisioning profiles, you should click "Install Locally", which will open a file dialog for you to navigate to a folder in which to store the generated files.

Install files locally
Select directory to save files in
All done

Building Your App

After selecting your local install location, and closing the wizard, you should see the fields of the "iOS Signing" properties panel filled in correctly. You should now be able to send iOS debug or Appstore builds without the usual hassles.

Filled in signing panel after wizard complete

Future Improvements

This wizard is just the next step in our mission to simplify the app-development process. In the next while we’ll be rolling out more features like this. Some planned features include push certificate generation and Appstore uploads. If there are particular aspects of the app development and deployment process that you still find cumbersome, make sure to let us know so we can work on finding solutions.


If you want to see the wizard in action, you can check out this 2 minute screencast.

Share this Post:

Posted by Steve Hannah

Steve writes software for Codename One. He is an open source enthusiast who loves to tinker with new technologies.