How to make iOS App Ad Hoc distribution

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 somewhere. 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 a manifest.plist file there too. Upload the .ipa file(s) to the internet and now it’s time to prepare manifest.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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <?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 slightly larger file with fields for images. And if you opted-in the app thinning it will be even larger – including different app versions ...

January 26, 2023 · 4 min