React Native ~ iOS Code Signing and Provisioning - rohit120582sharma/Documentation GitHub Wiki

As you may already know, a non-jailbroken iOS device is only able to run apps approved by Apple and installed through the App Store.

Apple achieves this by requiring that every app run by iOS has a "Signed Apple Certificate". Apps installed from the App Store come bundled with a certificate, which the system verifies before it allows the app to run. If there’s no signature or if the signature is invalid, the app won’t run.

When developers submit their apps to the App Store, Apple manually installs your application onto test devices and makes sure the application performs as described (in your App Description), does not crash under normal usage, and passes their App Store Review Guidelines. Once the app passes the review process, it is certified for release.

Apple then takes your application, and re-signs it with their security certificate. This is the magic key here. Any application that is signed by Apple is “blessed” to run on any iOS device indefinitely. From here, the app is ready to be published on the App Store and available to your users.

So if only apps that are signed by Apple are allowed to run on iOS devices, how are developers and testers allowed to install their applications for debugging and testing? Apple will allow developers to run their apps on iOS devices on Apple’s behalf through the use of Provisioning Profiles.

As a developer, you need a way to create and sign your own certificates. That’s where the Certificates, IDs & Profiles area comes in.


Provisioning Profiles

Profiles, sometimes called "code signing identities", are files generated by the Developer Center that allow Xcode to sign your apps in a way that allows iOS on your devices to identify them as valid.

There are two types of profiles:

  • Development profiles: These are tied to specific devices, so the app can only run on those. It allows you to execute your application on iOS devices for development and testing purposes without submitting to App Store. This gives you just enough flexibility for debugging and testing on device.
  • Distribution profiles: These are used to submit app to the App Store and distribute your app for testing. After the app is reviewed by apple they sign in the app with their on signeture that can run on any device.

Anyone can create development certificates, but only those with admin privileges can create distribution certificates.

There are quite a few options:

  • iOS App Development: for testing the app on a physical device while developing.
  • Ad Hoc: for distributing the app to non-TestFlight testers (e.g. via HockeyApp).
  • App Store: for distributing the app via TestFlight or the App Store. (Note that this one doesn’t work on its own: your app will still need signing by Apple.)

Provisioning profile consist of several items, but the most common ones you need to know are:

There are several steps we need to do in order to create a provisioning profile. They include:


⚠️ **GitHub.com Fallback** ⚠️