How to make iOS App Ad Hoc distribution
Created | |
---|---|
Updated | |
Tags | Xcode |
What you need to know before you start:
- Every device you want the app on should provide you its UDID
- Every device with iOS 16 and higher should enable Developer Mode
So let's start:
- Develop an app
- Decide which devices should have access to the app
- Retrieve their UDIDs (there are several ways, find the one that fits you and the users most)
- Add UDIDs to the eligible devices’ list
- Archive app
- You'll need to store your
.ipa
file as well as a certain.plist
file somwhere. Decide where and prepare to upload files there
- Select "Export” and chose "Ad Hoc Distribution” there. Click "Next”
- Here you get to chose App Thinning and whether to include a preassembled
manifest.plist
file. For the sake simplicity you can set thinning to "None” but if you know what it is and how to use it – go for it. Next option is whether you want to have a generated.plist
file or not. You might try this option but it requires you to know the link your app will be under in advance (so right now, even before you generated the.ipa
file) and have 2 images: 57x57 and 512x512. But you don't have to do it now, just a little bit later I'll show exactly how this.plist
file should look like so you can copy-paste it and use right away. Click "Next”
- If you checked "Include manifest” in previous step you'll need to fill some fields there. Then click "Next”
- In this step you just select whether you want or not to sign the app automatically. If you've ever distributed app to the App Store you should be familiar with this step. If you're not then you most probably need to check "Automatically manage signing”. Click "Next” and wait some loading
- Final step in which you check all the details and click "Export”. Select directory on your Mac to export the app to and you're done! At least here, in Xcode Organizer :)
- Once it's exported, you'll find a folder with
.ipa
file(s) in it. Depending on what you’ve selected earlier you might find amanifest.plist
file there too. Upload the.ipa
file(s) to the internet and now it's time to preparemanifest.plist
- If you've generated manifest earlier, you can skip this step. If you haven't – go to any text editor, create a file with a
.plist
extension and put this code inside. Don't forget to insert.ipa
link, bundle identifier, bundle version and title in the places I marked
<?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>[insert .ipa link here]</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>[insert bundle identifier here]</string>
<key>bundle-version</key>
<string>[insert bundle version here]</string>
<key>kind</key>
<string>software</string>
<key>platform-identifier</key>
<string>com.apple.platform.iphoneos</string>
<key>title</key>
<string>[insert app title here]</string>
</dict>
</dict>
</array>
</dict>
</plist>
If you generated this manifest
in step 8, you'll have a sligtly larger file with fields for images. And if you opted-in the app thinning it will be even larger – including different app versions
- We're almost done. Now go ahead and upload the
.ipa
file as well as themanifest
to the site you want it to be accessed from
- And the last thing: you need to give a way to actually download the app. The important part is that iOS has to recognize the
manifest
and find the appropriate link to an.ipa
file there. Therefore we give a link to themanifest
itself. Here's an HTML code you can paste to your website page. Don't forget to insert the link to themanifest
file in the place I marked
<a href="itms-services://?action=download-manifest&url=[insert URL to manifest.plist]">
Download app
</a>
- Now publish these changes and you're good to go! Go ahead and download the app from this website right to your phone. Don't forget to turn on the Developer Mode if you're on iOS 16 and higher and remember, app will launch only on the devises which UDIDs you marked as eligible.
Happy distribution!
If you have any questions, do not hesitate to ping me: ☎️Contact