Ad-hoc Deployment
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:
In your xcode project go to
Product > Archive
Click
Distribute
in the xcode organizer window that appears when the operation is completeClick
Save for Enterprise or Ad Hoc Deployment
and choose nextChoose 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.
Click
Export
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)This will save two files
yourFilename.ipa
andyourFileName.plist
. Copy these files to your webserver.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
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 selectAd Hoc
(or Enterprise) and press next: You have to check the boxinclude 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
andmanifest.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)