iOS .ipa distribution & installation via Dropbox

I have an enterprise iOS application that I want to distribute. Apple forces distribution over HTTPS. I did not have a server with SSL & HTTPS enabled on it; but since the distribution involves 2 files, I was able to split the distribution portion to Dropbox and point to it from my unsecured network.

iOS distribution involves .ipa and .plist files. The .ipa is the actual application that the end user needs to download before installing over HTTPS. The .plist file is the one that references this .ipa file. And the actual link distributed to users need to point to this .plist file.

The first step is to create a public folder on Dropbox and upload your App.ipa file in there. Get a link to the file with 'Anyone with link' can view the file setting. The link should look something like this with public key in there:

https://www.dropbox.com/s/imkT8oLhq0Xk3yj/App.plist?dl=0

Now, create your App.plist file. It should look like this:

<!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>https://dl.dropboxusercontent.com/s/imkT8oLhq0Xk3yj/App.ipa</string>
                                </dict>
                        </array>
                        <key>metadata</key>
                        <dict>
                                <key>bundle-identifier</key>
                                <string>com.example.your.app</string>
                                <key>bundle-version</key>
                                <string>1.0</string>
                                <key>kind</key>
                                <string>software</string>
                                <key>title</key>
                                <string>Your App</string>
                        </dict>
                </dict>
        </array>
</dict>
</plist>


Two things to keep in mind:

  • The link to your ipa file should start with dl.dropboxusercontent.com (not the way dropbox provided the link). Your public key goes in this link.
  • Verify your id 'com.example.your.app' matches yours (highlighted)

Other things can be customized to preference. Save this file as App.plist and upload it in the same directory as App.ipa. Create a dropbox link for this .plist file with the same 'Anyone with link' can view setting.

https://www.dropbox.com/s/g5axdL2AnZqt59x/App.plist?dl=0

And now comes the easy part:

On the page on your local web server running happily without SSL, link the .plist file:

<a href="itms-services://?action=download-manifest&url=https://www.dropbox.com/s/g5axdL2AnZqt59x/App.plist">Install Your App</a>

Note:

  • The link needs to have action=download-manifest
  • Drop any trailing characters after .plist (?dl=0) in this case.

That's it! If this link is on your AppDownload.html page. Point your users to it and they should be able to download your enterprise iOS App!

Note: I haven't tried this with any other cloud hosting service. But theoretically any of them should work as long as they are accessed over HTTPS.