Before we dive in any further here, let's put in some perspective. Let's say I'm developing a game, and I'd like you to try it out for me and provide some feedback. Well, in order to try the game out, you'd have to be able to install it, right? You might ask how you're going to do that if it's not available on the App Store yet, and that's a very good question. Part of the way the App Store works is by validating that each app downloaded is signed with a digital certificate, which is issued to each developer when they apply to Apple's iOS Developer Program.
This allows the device to be sure that the app being installed actually came from the App Store, and that it is authorized to be installed on the device. In order to allow developers to distribute builds of their apps for testing purposes, Apple allows the developer to send the app's "package" directly to a limited number of people, along with a special file called a Provisioning Profile, which provides information about the app, the developer, and also contains a list of specific devices that the package may be installed on. To build this profile, the developer must obtain a unique identifier code, called a UDID, for each device that is going to be used in testing, which usually requires the tester to follow instructions or download an app to locate this information. Once the tester receives the package, they must then drag both the package and the profile into iTunes, and then connect their device and sync it. Any updates to the app require this process to be repeated, and there are often errors and other problems that cause headaches for both the tester and the developer.
So, how does TestFlight solve this, you ask? First, it starts by helping the developer to get organized. When logged in to the TestFlight dashboard, the developer is immediately presented with the ability to build up "teams" of testers and developers, as well as distribution lists to control access to different builds of the app.
Going back to our scenario from earlier, if I want to invite you to test my game, all I have to do is click the Invite a teammate button
, enter in your email address and click send. You would then check your email from your device, and you'd see a link asking you to sign up to test my app. Tap the link, fill out some basic info (such as your name and the password you'd like to use for TestFlight), and then you're automatically prompted to accept and install TestFlight's profile. Once the profile is installed, I would go back to my dashboard and see that you're now listed under my team of testers, and the information about your device (including the UDID required for the profile I mentioned earlier) has already been provided to me, without you having to do any extra digging.
Devices are automatically shown for each tester
From there, I can easily take that information and put it into the profile, and I can be confident that it's correct since it's coming directly from the device -- no chance of copy and paste errors or getting the wrong ID for the wrong device, since the device type, OS version and ID are all kept together. Even better, though, is the next step: sending you the app. The days of dragging builds into iTunes
and syncing are over -- I just upload the build, confirm which testers I want to receive it, and TestFlight will take care of notifying you that the build is ready, along with letting you download and install it with just a single tap. The process feels so simple and streamlined, it seems like it's how Apple should have developed it to begin with.
Ironically, TestFlight itself is also in beta right now, though it's hard to tell. The website is very nicely done, with a lot of attention to detail and plenty of images and hints to help you along -- it looks very well polished. Installation goes off without a hitch and even drops a nice little TestFlight icon on your home screen so that you can quickly access your builds. The site is also smart enough to let you know when there is a problem with an upload or anything else that might cause headaches down the road. Overall, it's a very promising service, and it's free for iOS developers who are distributing on the App Store.