I would like to deploy an app to 20 iOS devices (iPhones and iPads) using Apple Ad-Hoc Deployment. I need to push out the application from a particular computer. Some of the devices that I will be using might have already been synced to computers.

I'm guessing that once I sync these devices to the computer I'll be using to deploy the app from, the content on each device that has previously been synced to a computer will be wiped. Is that correct? Is there a way around that?


Solution 1:

If you don't want to use testflight, here is another over-the-air solution:

  1. In your xcode project go to Product > Archive

  2. Click Distribute in the xcode organizer window that appears when the operation is complete

  3. Click Save for Enterprise or Ad Hoc Deployment and choose next

  4. Choose your ad hoc provisioning profile (created in the member center at developer.apple.com. Make sure it has all 20 device uuids included on the profile.

  5. Click Export

  6. Save it. Make sure to click on the Save for enterprise distribution checkbox and fill out the required info. Application URL will be the URL starting with http:// or https:// that will go to your files (see next step)

  7. This will save two files yourFilename.ipa and yourFileName.plist. Copy these files to your webserver.

  8. Now for the magic. You need to make a link somewhere with the URL itms-services://?action=download-manifest&url=http://yourwebserver.com/path/to/yourFileName.plist

  9. Assuming all your links work and your provisioning profiles are correct, the app should start installing on any registered device that clicks on that link.

If you don't want over the air downloads, you can distribute that .ipa file that was generated in step 6 to your 20 people (their devices must be registered on the provisioning profile still). They can open that file in iTunes and then sync your app with their devices.

Installation of an application over the air or by syncing with iTunes will not wipe the content of any devices.

Solution 2:

@Santa Claus answer is still valid in 2020. This is a good option to install app to selected devices when you don't want to use testflight for example bacause of 90 days limit.

Couple of things to point:

  • The process order is a little bit different
  • When you press Distribute App in xcode Archive/Organizer and select Ad Hoc (or Enterprise) and press next: You have to check the box include manifest for over-the-air installation (App Thinning can be None)
  • (6.) in Distribution manifest information: You have to give the urls where you place your file for download. I noticed that the url seems to be case-sensitive so if your app is Foo make sure to put the url like https://www.example.com/apps/Foo.ipa
  • Don't forget to use provisioning profile that have the UUIDs of the devices you want to install the app (can be done Certificates, Identifiers & Profiles in https://developer.apple.com)
  • (7.) You will get package of files. You will need yourFilename.ipa and manifest.plist
  • (8.) Use the manifest.plist in the url, I created a dummy web page where I placed this kind of button (Same place should have the *.ipa file) <a class="btn-download" href="itms-services://?action=download-manifest&url=https://www.example.com/path/manifest.plist">Download</a>

If you don't get error when clicking the download with safari browser in the selected device (UUID match) it will install the app. (Might not give any feedback of success but the icon is found on desktop and the app can be launched)