OTA iOS app distribution without Testflight

So TestFlight has been taken down today and rolled into the new iTunes connect service. Unfortunately the new service came with bunch of restrictions that make it pretty much useless for me, including:

  • 30 day limit on build beta testing
  • 25 user limit for internal builds
  • An Apple review required to release to more than 25 users

So what can be done, without requiring testers to fiddle around with iTunes?
Now with the enterprise developer account it is well documented that you can serve IPA files using a URL, but this functionality is also available to normal Apple developer account users, but with a little bit of tinkering.

Firstly create a Ad-Hoc IPA that you would normally upload to Testflight.
Next you will need to generate a manifest for your IPA (this used to be done for you, but the feature has been removed from Xcode 6). Here’s a copy of the template that I use to populate mine:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>items</key>
      <array>
         <dict>
            <key>assets</key>
            <array>
               <dict>
                  <key>kind</key>
                  <string>software-package</string>
                  <key>url</key>
                  <string>REPLACE_URL</string>
               </dict>
            </array>
            <key>metadata</key>
            <dict>
               <key>bundle-identifier</key>
               <string>REPLACE_BUNDLE_ID</string>
               <key>bundle-version</key>
               <string>REPLACE_BUILD_VERSION</string>
               <key>kind</key>
               <string>software</string>
               <key>title</key>
               <string>REPLACE_APP_NAME</string>
            </dict>
         </dict>
   </array>
</dict>
</plist>

Replace the strings, and use the URL that your IPA will be hosted at (this address does not need to be https).
You will then need to upload this manifest file to a server which is uses https. I ended up using a Amazon S3 bucket as they are currently offering a year free trial for new users. If the manifest file is not on a server which uses https, the download will not work on iOS 7+ devices.
Once you are hosting both the Manifest file, and uploaded your IPA, you should be able to download your IPA onto a device using the following link:

itms-services://?action=download-manifest&url=https://REPLACE_MANIFEST_URL

this link can then me emailed or on a webpage, and will allow any user in your provisioning profile to download your app directly on their iOS device.