Effortlessly Distribute Your iOS App with GitHub: A Step-by-Step Guide [OTA — over the air]

Abdullah Mohammad Daihan
3 min readDec 12, 2023

--

Are you an iOS developer looking for a reliable way to distribute your app outside the App Store for testing or enterprise purposes? With Dropbox’s recent changes causing hiccups, GitHub emerges as a savior with its straightforward and developer-friendly platform. Let’s dive into how you can leverage GitHub for hosting your IPA and PLIST files for easy app distribution.

To enable downloading your IPA file using a PLIST file on GitHub, you’ll need to host both the IPA and PLIST files on GitHub and then create a custom URL scheme for installation. Here’s a step-by-step guide to set it up:

Hosting the IPA and PLIST Files on GitHub

1. Upload the IPA File to a GitHub Repository
— Create a new GitHub repository or use an existing one.
— Upload your IPA file to the repository.
— Note: GitHub has a file size limit of 100 MB. If your IPA file exceeds this, you might need to use Git Large File Storage (LFS).

2. Create a GitHub Release
— Go to your repository.
— Click on “Releases” and then “Create a new release” or “Draft a new release.”
— Tag your release, add a title, and describe the release.
— Attach the IPA file to the release and publish it.

3. Get the Direct Download Link for the IPA File
— Once the release is published, find the IPA under “Assets.”
— Right-click on the IPA file link and copy the link address. This is your direct download link.

Preparing and Hosting the PLIST File

4. Create or Update the PLIST File
— Now in your mac create a plist file and paste bellow code.

<?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>raw_link</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>xcode_bundle_id</string>
<key>bundle-version</key>
<string>1.0.2</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>AppName</string>
</dict>
</dict>
</array>
</dict>
</plist>

— Replace `raw_link` with the actual direct download link of the IPA file from GitHub.

-- Replace xcode_bundle_id with your app bundle id in build setting of xcode.

5. Upload the PLIST File to GitHub
— Upload the created PLIST file in step 4 to the same GitHub repository.
— After uploading, go to the file in the repository and click on “Raw” to view the raw file.
— Copy the URL of the raw PLIST file. This is the link you will use for installation.

Creating the Installation URL

— Use the following format to create the installation URL:
```
itms-services://?action=download-manifest&url=[RAW_PLIST_LINK]
```
— Replace `[RAW_PLIST_LINK]` with the raw PLIST file URL you copied from GitHub.

Usage

- Share the installation URL with your users.
- When they open this URL on their iOS device, it should prompt them to install the app, just like it did with the Dropbox links.

Considerations

  • Ensure that both the IPA and PLIST files are accessible publicly if the repository is public. If your repository is private then above approach wouldn't work.
  • Since it's adhoc distribution so ipa should be uploaded via adhoc certificate means (development certificate not distribution certificate). So the user will download your app must add their device uuid to devices section of developer.apple.com

--

--

Abdullah Mohammad Daihan
Abdullah Mohammad Daihan

Written by Abdullah Mohammad Daihan

iOS Software Engineer at Reve Systems

Responses (1)