Thanks! We'll be in touch in the next 12 hours
Oops! Something went wrong while submitting the form.

How to setup iOS app with Apple developer account and TestFlight from scratch

Rakesh Ostwal

Mobile App Development

In this article, we will discuss how to set up the Apple developer account, build an app (create IPA files), configure TestFlight, and deploy it to TestFlight for the very first time.

There are tons of articles explaining how to configure and build an app or how to setup TestFlight or setup application for ad hoc distribution. However, most of them are either outdated or missing steps and can be misleading for someone who is doing it for the very first time.

If you haven’t done this before, don’t worry, just traverse through the minute details of this article, follow every step correctly, and you will be able to set up your iOS application end-to-end, ready for TestFlight or ad hoc distribution within an hour.

Prerequisites

Before we start, please make sure, you have:

  • A React Native Project created and opened in the XCode
  • XCode set up on your Mac
  • An Apple developer account with access to create the Identifiers and Certificates, i.e. you have at least have a Developer or Admin access - https://developer.apple.com/account/
  • Access to App Store Connect with your apple developer account -https://appstoreconnect.apple.com/
  • Make sure you have an Apple developer account, if not, please get it created first.

The Setup contains 4 major steps: 

  • Creating Certificates, Identifiers, and Profiles from your Apple Developer account
  • Configuring the iOS app using these Identifiers, Certificates, and Profiles in XCode
  • Setting up TestFlight and Internal Testers group on App Store Connect
  • Generating iOS builds, signing them, and uploading them to TestFlight on App Store Connect

Certificates, Identifiers, and Profiles

Before we do anything, we need to create:

  • Bundle Identifier, which is an app bundle ID and a unique app identifier used by the App Store
  • A Certificate - to sign the iOS app before submitting it to the App Store
  • Provisioning Profile - for linking bundle ID and certificates together

Bundle Identifiers

For the App Store to recognize your app uniquely, we need to create a unique Bundle Identifier.

Go to https://developer.apple.com/account: you will see the Certificates, Identifiers & Profiles tab. Click on Identifiers. 

Click the Plus icon next to Identifiers:

Select the App IDs option from the list of options and click Continue:

Select App from app types and click Continue

On the next page, you will need to enter the app ID and select the required services your application can have if required (this is optional—you can enable them in the future when you actually implement them). 

Keep those unselected for now as we don't need them for this setup.

Once filled with all the information, please click on continue and register your Bundle Identifier.

Generating Certificate

Certificates can be generated 2 ways:

  • By automatically managing certificates from Xcode
  • By manually generating them

We will generate them manually.

To create a certificate, we need a Certificate Signing Request form, which needs to be generated from your Mac’s KeyChain Access authority.

Creating Certificate Signing Request:

Open the KeyChain Access application and Click on the KeyChain Access Menu item at the left top of the screen, then select Preferences

Select Certificate Assistance -> Request Certificate from Managing Authority

Enter the required information like email address and name, then select the Save to Disk option.

Click Continue and save this form to a place so you can easily upload it to your Apple developer account

Now head back to the Apple developer account, click on Certificates. Again click on the + icon next to Certificates title and you will be taken to the new certificate form.

Select the iOS Distribution (App Store and ad hoc) option. Here, you can select the required services this certificate will need from a list of options (for example, Apple Push Notification service). 

As we don’t need any services, ignore it for now and click continue.

On the next screen, upload the certificate signing request form we generated in the last step and click Continue.

At this step, your certificate will be generated and will be available to download.

NOTE: The certificate can be downloaded only once, so please download it and keep it in a secure location to use it in the future.

Download your certificate and install it by clicking on the downloaded certificate file. The certificate will be installed on your mac and can be used for generating builds in the next steps.

You can verify this by going back to the KeyChain Access app and seeing the newly installed certificate in the certificates list.

Generating a Provisioning Profile

Now link your identifier and certificate together by creating a provisioning profile.

Let’s go back to the Apple developer account, select the profiles option, and select the + icon next to the Profiles title.

You will be redirected to the new Profiles form page.

Select Distribution Profile and click continue:

Select the App ID we created in the first step and click Continue:

Now, select the certificate we created in the previous step:

Enter a Provisioning Profile name and click Generate:

Once Profile is generated, it will be available to download, please download it and keep it at the same location where you kept Certificate for future usage.

Configure App in XCode

Now, we need to configure our iOS application using the bundle ID and the Apple developer account we used for generating the certificate and profiles.

Open the <appname>.xcworkspace file in XCode and click on the app name on the left pan. It will open the app configuration page.

Select the app from targets, go to signing and capabilities, and enter the bundle identifier. 

Now, to automatically manage the provisioning profile, we need to download the provisioning profile we generated recently. 

For this, we need to sign into XCode using your Apple ID.

Select Preferences from the top left XCode Menu option, go to Accounts, and click on the + icon at the bottom.

Select Apple ID from the account you want to add to the list, click continue and enter the Apple ID.

It will prompt you to enter the password as well.

Once successfully logged in, XCode will fetch all the provisioning profiles associated with this account. Verify that you see your project in the Teams section of this account page.

Now, go back to the XCode Signing Capabilities page, select Automatically Manage Signing, and then select the required team from the Team dropdown.

At this point, your application will be able to generate the Archives to upload it to either TestFlight or Sign them ad hoc to distribute it using other mediums (Diawi, etc.).

Setup TestFlight

TestFlight and App Store management are managed by the App Store Connect portal.

Open the App Store Connect portal and log in to the application.

After you log in, please make sure you have selected the correct team from the top right corner (you can check the team name just below the user name).

Select My Apps from the list of options. 

If this is the first time you are setting up an application on this team, you will see the + (Add app) option at the center of the page, but if your team has already set up applications, you will see the + icon right next to Apps Header.

Click on the + icon and select New App Option:

Enter the complete app details, like platform (iOS, MacOS OR tvOS), aApp name, bundle ID (the one we created), SKU, access type, and click the Create button.

You should now be able to see your newly created application on the Apps menu. Select the app and go to TestFlight. You will see no builds there as we did not push any yet.

Generate and upload the build to TestFlight

At this point, we are fully ready to generate a build from XCode and push it to TestFlight. To do this, head back to XCode.

On the top middle section, you will see your app name and right arrow. There might be an iPhone or other simulator selected. Pplease click on the options list and select Any iOS Device.

Select the Product menu from the Menu list and click on the Archive option.

Once the archive succeeds, XCode will open the Organizer window (you can also open this page from the Windows Menu list).

Here, we sign our application archive (build) using the certificate we created and upload it to the App Store Connect TestFlight.

On the Organizer window, you will see the recently generated build. Please select the build and click on Distribute Button from the right panel of the Organizer page.

On the next page, select App Store Connect from the “Select a method of distribution” window and click Continue.

NOTE: We are selecting the App Store Connect option as we want to upload a build to TestFlight, but if you want to distribute it privately using other channels, please select the Ad Hoc option.

Select Upload from the “Select a Destination” options and click continue. This will prepare your build to submit it to App Store Connect TestFlight.

For the first time, it will ask you how you want to sign the build, Automatically or Manually?

Please Select Automatically and click the Next button.

XCode may ask you to authenticate your certificate using your system password. Please authenticate it and wait until XCode uploads the build to TestFlight.

Once the build is uploaded successfully, XCode will prompt you with the Success modal.

Now, your app is uploaded to TestFlight and is being processed. This processing takes 5 to 15 minutes, at which point TestFlight makes it available for testing.

Add Internal Testers and other teammates to TestFlight

Once we are done with all the setup and uploaded the build to TestFlight, we need to add internal testers to TestFlight.

This is a 2-step process. First, you need to add a user to App Store Connect and then add a user to TestFlight.

Go to Users and Access

Add a new User and App Store sends an invitation to the user

Once the user accepts the invitation, go to TestFlight -> Internal Testing

In the Internal Testing section, create a new Testing group if not added already and

add the user to TestFlight testing group.

Now, you should be able to configure the app, upload it to TestFlight, and add users to the TestFlight testing group.

Hopefully, you enjoyed this article, and it helped in setting up iOS applications end-to-end quickly without getting too much confused. 

Thanks.

Get the latest engineering blogs delivered straight to your inbox.
No spam. Only expert insights.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Did you like the blog? If yes, we're sure you'll also like to work with the people who write them - our best-in-class engineering team.

We're looking for talented developers who are passionate about new emerging technologies. If that's you, get in touch with us.

Explore current openings

You may also like

No items found.

How to setup iOS app with Apple developer account and TestFlight from scratch

In this article, we will discuss how to set up the Apple developer account, build an app (create IPA files), configure TestFlight, and deploy it to TestFlight for the very first time.

There are tons of articles explaining how to configure and build an app or how to setup TestFlight or setup application for ad hoc distribution. However, most of them are either outdated or missing steps and can be misleading for someone who is doing it for the very first time.

If you haven’t done this before, don’t worry, just traverse through the minute details of this article, follow every step correctly, and you will be able to set up your iOS application end-to-end, ready for TestFlight or ad hoc distribution within an hour.

Prerequisites

Before we start, please make sure, you have:

  • A React Native Project created and opened in the XCode
  • XCode set up on your Mac
  • An Apple developer account with access to create the Identifiers and Certificates, i.e. you have at least have a Developer or Admin access - https://developer.apple.com/account/
  • Access to App Store Connect with your apple developer account -https://appstoreconnect.apple.com/
  • Make sure you have an Apple developer account, if not, please get it created first.

The Setup contains 4 major steps: 

  • Creating Certificates, Identifiers, and Profiles from your Apple Developer account
  • Configuring the iOS app using these Identifiers, Certificates, and Profiles in XCode
  • Setting up TestFlight and Internal Testers group on App Store Connect
  • Generating iOS builds, signing them, and uploading them to TestFlight on App Store Connect

Certificates, Identifiers, and Profiles

Before we do anything, we need to create:

  • Bundle Identifier, which is an app bundle ID and a unique app identifier used by the App Store
  • A Certificate - to sign the iOS app before submitting it to the App Store
  • Provisioning Profile - for linking bundle ID and certificates together

Bundle Identifiers

For the App Store to recognize your app uniquely, we need to create a unique Bundle Identifier.

Go to https://developer.apple.com/account: you will see the Certificates, Identifiers & Profiles tab. Click on Identifiers. 

Click the Plus icon next to Identifiers:

Select the App IDs option from the list of options and click Continue:

Select App from app types and click Continue

On the next page, you will need to enter the app ID and select the required services your application can have if required (this is optional—you can enable them in the future when you actually implement them). 

Keep those unselected for now as we don't need them for this setup.

Once filled with all the information, please click on continue and register your Bundle Identifier.

Generating Certificate

Certificates can be generated 2 ways:

  • By automatically managing certificates from Xcode
  • By manually generating them

We will generate them manually.

To create a certificate, we need a Certificate Signing Request form, which needs to be generated from your Mac’s KeyChain Access authority.

Creating Certificate Signing Request:

Open the KeyChain Access application and Click on the KeyChain Access Menu item at the left top of the screen, then select Preferences

Select Certificate Assistance -> Request Certificate from Managing Authority

Enter the required information like email address and name, then select the Save to Disk option.

Click Continue and save this form to a place so you can easily upload it to your Apple developer account

Now head back to the Apple developer account, click on Certificates. Again click on the + icon next to Certificates title and you will be taken to the new certificate form.

Select the iOS Distribution (App Store and ad hoc) option. Here, you can select the required services this certificate will need from a list of options (for example, Apple Push Notification service). 

As we don’t need any services, ignore it for now and click continue.

On the next screen, upload the certificate signing request form we generated in the last step and click Continue.

At this step, your certificate will be generated and will be available to download.

NOTE: The certificate can be downloaded only once, so please download it and keep it in a secure location to use it in the future.

Download your certificate and install it by clicking on the downloaded certificate file. The certificate will be installed on your mac and can be used for generating builds in the next steps.

You can verify this by going back to the KeyChain Access app and seeing the newly installed certificate in the certificates list.

Generating a Provisioning Profile

Now link your identifier and certificate together by creating a provisioning profile.

Let’s go back to the Apple developer account, select the profiles option, and select the + icon next to the Profiles title.

You will be redirected to the new Profiles form page.

Select Distribution Profile and click continue:

Select the App ID we created in the first step and click Continue:

Now, select the certificate we created in the previous step:

Enter a Provisioning Profile name and click Generate:

Once Profile is generated, it will be available to download, please download it and keep it at the same location where you kept Certificate for future usage.

Configure App in XCode

Now, we need to configure our iOS application using the bundle ID and the Apple developer account we used for generating the certificate and profiles.

Open the <appname>.xcworkspace file in XCode and click on the app name on the left pan. It will open the app configuration page.

Select the app from targets, go to signing and capabilities, and enter the bundle identifier. 

Now, to automatically manage the provisioning profile, we need to download the provisioning profile we generated recently. 

For this, we need to sign into XCode using your Apple ID.

Select Preferences from the top left XCode Menu option, go to Accounts, and click on the + icon at the bottom.

Select Apple ID from the account you want to add to the list, click continue and enter the Apple ID.

It will prompt you to enter the password as well.

Once successfully logged in, XCode will fetch all the provisioning profiles associated with this account. Verify that you see your project in the Teams section of this account page.

Now, go back to the XCode Signing Capabilities page, select Automatically Manage Signing, and then select the required team from the Team dropdown.

At this point, your application will be able to generate the Archives to upload it to either TestFlight or Sign them ad hoc to distribute it using other mediums (Diawi, etc.).

Setup TestFlight

TestFlight and App Store management are managed by the App Store Connect portal.

Open the App Store Connect portal and log in to the application.

After you log in, please make sure you have selected the correct team from the top right corner (you can check the team name just below the user name).

Select My Apps from the list of options. 

If this is the first time you are setting up an application on this team, you will see the + (Add app) option at the center of the page, but if your team has already set up applications, you will see the + icon right next to Apps Header.

Click on the + icon and select New App Option:

Enter the complete app details, like platform (iOS, MacOS OR tvOS), aApp name, bundle ID (the one we created), SKU, access type, and click the Create button.

You should now be able to see your newly created application on the Apps menu. Select the app and go to TestFlight. You will see no builds there as we did not push any yet.

Generate and upload the build to TestFlight

At this point, we are fully ready to generate a build from XCode and push it to TestFlight. To do this, head back to XCode.

On the top middle section, you will see your app name and right arrow. There might be an iPhone or other simulator selected. Pplease click on the options list and select Any iOS Device.

Select the Product menu from the Menu list and click on the Archive option.

Once the archive succeeds, XCode will open the Organizer window (you can also open this page from the Windows Menu list).

Here, we sign our application archive (build) using the certificate we created and upload it to the App Store Connect TestFlight.

On the Organizer window, you will see the recently generated build. Please select the build and click on Distribute Button from the right panel of the Organizer page.

On the next page, select App Store Connect from the “Select a method of distribution” window and click Continue.

NOTE: We are selecting the App Store Connect option as we want to upload a build to TestFlight, but if you want to distribute it privately using other channels, please select the Ad Hoc option.

Select Upload from the “Select a Destination” options and click continue. This will prepare your build to submit it to App Store Connect TestFlight.

For the first time, it will ask you how you want to sign the build, Automatically or Manually?

Please Select Automatically and click the Next button.

XCode may ask you to authenticate your certificate using your system password. Please authenticate it and wait until XCode uploads the build to TestFlight.

Once the build is uploaded successfully, XCode will prompt you with the Success modal.

Now, your app is uploaded to TestFlight and is being processed. This processing takes 5 to 15 minutes, at which point TestFlight makes it available for testing.

Add Internal Testers and other teammates to TestFlight

Once we are done with all the setup and uploaded the build to TestFlight, we need to add internal testers to TestFlight.

This is a 2-step process. First, you need to add a user to App Store Connect and then add a user to TestFlight.

Go to Users and Access

Add a new User and App Store sends an invitation to the user

Once the user accepts the invitation, go to TestFlight -> Internal Testing

In the Internal Testing section, create a new Testing group if not added already and

add the user to TestFlight testing group.

Now, you should be able to configure the app, upload it to TestFlight, and add users to the TestFlight testing group.

Hopefully, you enjoyed this article, and it helped in setting up iOS applications end-to-end quickly without getting too much confused. 

Thanks.

Did you like the blog? If yes, we're sure you'll also like to work with the people who write them - our best-in-class engineering team.

We're looking for talented developers who are passionate about new emerging technologies. If that's you, get in touch with us.

Explore current openings