Over The Air (OTA) iOS IPA File Distribution For Public?

Hao picture Hao · Sep 25, 2014 · Viewed 58.9k times · Source

I saw this Chinese company offering a demo for their app/service which is a .ipa file. You can simply visit a link by your iPhone via Safari and you can install the demo .ipa file.

The link is right under the iphone app download button.

This makes me wonder what stops people from distributing their app this way outside the Apple app store. A legal issue, but technical can-do?

And I am also wondering what the provisioning profile they have used is, to generate this .ipa file from Xcode with such broad capacity of installation. As far as Ad Hoc distribution profile goes, it allows only 100 users, still correct? Is this some other provisioning profile I don't know about? My best guess is that this is a normal enterprice installation and they just make it for everyone in the world... can they?

I have tried the demo on my iPhone 4 and it works fine. The left button on the login page is register. The right button is login. Try register with a name (make name unique) and password, as long as you can get a success message back. You can log in.

Answer

Razvan picture Razvan · Sep 25, 2014

Well, you're talking about OTA (over-the-air) ADHOC or ENTERPRISE distribution. I've been doing that for years for my beta testers.

You don't require any Enterprise Program to do that although now with Xcode 6 is a bit harder to do because after you archive your project for distribution, the ADHOC distribution doesn't create the necessary plist file anymore.

I don't know how the Enterprise program works in terms of the devices you can install the app to (if it is required to register the UDID for each device in your Developer Portal or not) but if you need to deploy your test app to your testers which have their devices registered in the Devices tab in your Developer Portal you can use what I've explained below.

So, how do you that? I'll explain in steps:

Please Note: it is required that you use an encrypted SSL connection on the server you're uploading the IPA and Plist files (or at least only for the Plist file - there's a workaround if you don't have an SSL connection on your server, see below).

1. In your developer portal generate an ADHOC Distribution Provisioning Profile for your App ID. Also select the devices that can install your distribution. Only those devices can install the app.

2. In Xcode go to Preferences > Accounts > Your Account > View Details > Refresh.

3. In Xcode go to your Project > Targets > Your target > Code Signing > Select the correct Provisioning Profile for ADHOC Distribution for your build schema.

4. Clean your project.

5. Select your device as the build device even if it's not connected to your computer and build your project to be sure no errors are occurring.

6. With your device selected, Archive your project.

7. In Xcode's Organizer select Export > Save for ADHOC Deployment > Select your account and be sure that your archive is using the correct Provisioning Profile (if you're not seeing the whole name, hold your mouse cursor over the clipped text for a few seconds and it will appear).

8. Name your file with an easy name and save it to a location of your choice.

9. You'll also need a Plist file to edit because Xcode is not generating one anymore so I've uploaded a template for you here. I've put examples in that plist and edit them accordingly.

10. Upload your IPA File and Plist File to your SSL Enabled Server. You should also change the name of the Plist File I've uploaded to match the name of your IPA File.

11. Create a link like this: itms-services://?action=download-manifest&url=http://yourdomain.com/AppName.plist

12. Send the link to your testers and they must click on the link on their devices and an installation alert will show up.

Now, if you don't have an SSL enabled server you can upload the Plist file to your Dropbox account while keeping the IPA file on your non-SSL enabled server and use it like this:

1. Get the link to the file. Should be something like this: https://www.dropbox.com/s/a8hpnmq654pmbaw/AppName.plist?dl=0

2. Copy everything starting with /s/..... and remove the ?dl=0 parameter.

3. Create your installation link like this: itms-services://?action=download-manifest&url=https://dl.dropbox.com/s/a8hpnmq654pmbaw/AppName.plist

4. Send the link to your testers to open it on their devices.