If you build apps more than likely you’ll need to send out test builds of your app to a group of users so they can review it and give you feedback before releasing it to the public. Depending on the scale and complexity of the app you’ll need to do this many times before your final release. Below are a couple of options when sharing with your team.

TestFlight Distribution

TestFlight is a free over-the-air platform used to distribute beta and internal iOS applications to team members. Developers can manage testing and receive feedback from their team with TestFlight’s Dashboard. The App Store approval process is not required. The general public cannot see a listing for your app, purchase or install it, only the people you invite to use it.

How Does it Work?

iOS Developers sign up at TestFlight, create a team, invite team members, add the team members’ devices to their application build (this still has to be done via Apple’s provisioning on the Developer Portal), upload to TestFlight and then distribute. Developers still have to build the app, however.

For a Developer

Sign up with TestFlight and create your team. Invite and gather the UDIDs from the team members and add them to your Apple Developer Portal and provisioning profile for the app. Build the iPhone Application (.IPA) and upload to TestFlight. Distribute the build to team members and let the magic happen. Receive feedback, monitor tester’s activity and perform a full fledge beta test from the comfort of your chair. Developers on teams can also upload multiple apps for testing/internal distribution. Integrating the TestFlight SDK will further the data collected from your testing phase.



For a Tester

As a tester using TestFlight, you can either be invited, recruited or just sign up. Once you sign up with TestFlight and login to the dashboard for the first time, you will be asked to connect your device, allowing developers to access the device’s Unique Device Identifier (UDID). Once you have successfully connected the device to your account and have been accepted to a team, the developer will have to add the UDID to the application, so that you can install it on your device. (Only 100 UDIDs allowed per account) Once the developer uploads a build you will receive an email through TestFlight, from the developer, with a link to install the build. Follow the instructions in the email, click on the link, download the build to your device, and you will be ready to begin using the app.



Note: If you are a registered developer with an enterprise account and are making apps for in-house distribution, TestFlight works with those too. TestFlight fully supports enterprise apps and it works much like ad hoc apps for distribution. Just upload an application signed with an enterprise provisioning profile and distribute to your team and only approved members of your team will have access to the application for installation.

Apple Buys TestFlight



In February of this year Apple announced it had bought TestFlight and as of March 21 TestFlight no longer supported Android builds. Since this time Apple has integrated the TestFlight platform into iTunes Connect so Apple developers can easily send out test builds of their app before submitting to Apple for review.

For instructions on how to prepare your beta app and set up a list of testers watch the TestFlight video tutorial below.

Enterprise Distribution

The iOS Enterprise Distribution program allows a company to distribute their own “in-house” apps directly. It is intended for employees of the licensee company only and that licensee must be a company or organization with a DUNS number. The cost is $299 per year for this license compared to $99 per year for the iOS Developer License. A given device can have apps installed from only one iOS Enterprise License at a time.

“Internal Use Applications developed under this Agreement may be deployed on Deployment Devices in two ways: (1) deployment for internal use by Employees, and (2) deployment for use by Customers either on Your physical premises or under the direct supervision and physical control of Your Employees in other locations, subject to Apple’s right to review and approve such deployment as set forth herein.” – Apple

Note: The Enterprise program does not enable you to deploy apps to the Public App Store. For that you need to be enrolled in the standard iOS Developer Program.

How Does it Work?

Note: You must have the Team Agent role in the iOS Provisioning Portal to create the artifacts needed for this build.

The process for building an Enterprise app is:

1. Create the Distribution Certificate.

2. Create an Enterprise Provisioning Profile. (Go to developer.apple.com and click Member Center.)

3. Build the app using the Enterprise Provisioning Profile.

Following sections explain these steps in further detail.

Create a Distribution Certificate

Distribution certificates are used to sign Enterprise apps.

The steps to receive a Distribution Certificate are:

1. Login to the iOS Provisioning Portal with the Agent role. Goto “iOS Dev Center” -> “Certificates, Identifiers & Profiles” -> “Certificates

2. In the Certificates section, go to the Production tab. Click on ‘+’ icon. Select the type as “In-House and Ad Hoc”.

3. Follow the steps to generate Certificate Signing Request (CSR). Use the Certificate Assistant (available in the Keychain Access application on Mac OS X).

4. Upload the CSR to the iOS Provisioning Portal and download the distribution certificate.

5. Save the certificate on the disk, and open this using Key Chain Access.

6. Xcode can now use this certificate to sign iOS apps.

7. To export this certificate to a different (build) machine, exported it in .p12 format:

a. In Key Chain Access, go to the My Certificates section

b. Right-click on the downloaded certificate and click “Export…”

c. Save the certificate in .p12 format, and provide a secure password while saving.

Create an Enterprise Provisioning Profile

The steps to create an Enterprise Provisioning Profile are:

1. Log in to the iOS Provisioning Portal with the Team Agent role. Goto “iOS Dev Center” -> “Certificates, Identifiers & Profiles” -> “Provisioning Profiles”

2. In the Provisioning section, go to the Distribution tab.

3. Click on New Profile. On the Create iOS Provisioning Profile page

a. Select the Distribution Method as In House

b. Select an appropriate distribution certificate

c. Select App ID

4. Download the provisioning profile.

5. This provisioning profile can be used to build the app for in-house deployment.

Building an App Using an Enterprise Provisioning Profile

The steps to build an app on a machine are:

1. Install the Distribution certificate (.p12 file)

2. Open Xcode. Go to the Organizer window

3. Import the Enterprise Provisioning Profile

4. Open the app’s project file in Xcode

5. Go to Build Settings, Code Signing section

6. Select the certification contained in the Enterprise Provisioning Profile

7. Build the project using Build For > Build for Archiving. This will create the app archive in .ipa file format

8. The .ipa file is ready for enterprise deployment

Distribute to Your Team

Once you have the *.ipa you can store that on an internal web server. Since iOS7, the web server needs to support SSL secure encryption.

Create a web page on your internal network that everyone can access within the company, i.e. http://apps.yourcompany.com. Then create an HTML with a link for each app that you would like to share.

The a href link for every app in your list should look similar to this and point to a manifest file:

itms-services://?action=download-manifest&url=https:// /appName.plist

Here is a sample manifest file (appName.plist):

items assets kind software-package url http://10.44.41.21/appName.ipa kind display-image needs-shine url http://10.44.41.21/appName.png kind full-size-image needs-shine url http://10.44.41.21/appName.png metadata bundle-identifier ent.company.appName bundle-version kind software title appName

Note: As of iOS8, ensure that the icon URLs are valid. If they are not the user will not be able to install the app on their device.

Conclusion

Personally I like to use the Enterprise Distribution method internally. It’s easy because you don’t have to provision individual devices, this is ideal for large companies with lots of stakeholders and testers. It’s also nice to have one URL that everyone can visit to download any of your test apps within the company. Also best to host that URL on the companies internal network, in order to follow Apple’s rules about “deployment for internal use by Employees” mentioned above. It’s well worth the $299 a year for the Enterprise license, and you can create as many apps as you need.

If I were to send out builds for a personal project or for a small startup company, TestFlight is a much better option since your distribution list of people you need to share the app with is much smaller and within the standard Ad Hoc distribution limitation of 100 devices allowed to provision for a developer account.