Peter Chen's Blog
Create a Distribution Build in Xcode 4
Creating a Website To Allow Over-the-Air Installation of Your iPhone Apps

There are 3 common ways to distribute your iPhone app to testers.

The first is to get the tester’s UDID, and then build the app into a MyApp.ipa file.  Testers then get a provisioning profile and the MyApp.ipa file, and drag them into iTunes on the same machine that they normally use to sync their iPhone, and sync.

The second option is to use testflight.

The third option, and the one described in this article, is to create a simple website that testers can view from their iPhone, tap a link, and then watch the app download over-the-air.  Once the app starts downloading, iOS shows the icon and loading progress bar, just like the app was being downloaded from the App Store.

To setup this tester download website, follow these steps:

  1. Get the UDID of the tester’s iPhone
  2. Add your tester’s device and UDID in iTunes Connect to your app
  3. Build a dev version of your iPhone app with a provisioning profile that includes the tester’s device
  4. Create a website that has a link like this: <a href=”itms-services://?action=download-manifest&url=http://mywebsite.com/app.plist”>Download the app!</a>
  5. Create the app.plist file with contents like this:
<?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>http://mywebsite.com/app.ipa</string>
            </dict>
            <dict>
               <key>kind</key>
               <string>full-size-image</string>
               <key>needs-shine</key>
               <true/>
               <key>url</key>
               <string>http://mywebsite.com/iTunesArtwork.png</string>
            </dict>
            <dict>
               <key>kind</key>
               <string>display-image</string>
               <key>needs-shine</key>
               <true/>
               <key>url</key>
               <string>http://mywebsite.com/Icon.png</string>
            </dict>
         </array>
         <key>metadata</key>
         <dict>
            <key>bundle-identifier</key>
            <string>com.mywebsite</string>
            <key>bundle-version</key>
            <string>1.0</string>
            <key>kind</key>
            <string>software</string>
            <key>subtitle</key>
            <string>App Name</string>
            <key>title</key>
            <string>App Name</string>
         </dict>
      </dict>
   </array>
</dict>
</plist>