35

We have build an enterprise iPad App and now we want to give it to our employees. Initially when testing, we used ad-hoc distribution collecting all the test device's UDID and then creating the profile.

Now going live we want this app to be deployed in a secured web server and send the link to our employees, so that they enter the username and password before accessing the link.

There are around 500+ devices we need to install this iPad App. Do i need to collect all the UDID and then deploy the .ipa file, because Apple documentation says:

Create an enterprise distribution provisioning profile that authorizes devices to use apps you’ve signed.

If not that way, do the user needs to install the profile.mobileprovision file and then install the .ipa file?

We are still unable to decide how to deploy our app because of this issue. We would like to avoid the app approval process because it App handles a lot of sensitive data.

Can some one help me on this, how to do a OTA deployment for enterprise Apps?

Raptor
  • 48,613
  • 43
  • 209
  • 344

8 Answers8

72

As of December 2011, these are the steps:

  1. Create a provisioning profile in your Apple Enterprise account
  2. Set this as the Code Signing Identity under the Build setting of your app.
  3. Make sure the Bundle ID matches that of the provisioning profile.
  4. Select Product > Archive to build IPA file.
  5. Click Share (aka Distribute) button after selecting your Archive.
  6. Set Contents radio button to iOS App Store Package (.ipa)
  7. Make sure Identity in dropdown is the one used from Enterprise account.
  8. Click Next
  9. Select the check box "Save for Enterprise Distribution"
  10. For Application URL put in the URL that points to where the ipa file will be placed (example: http://oursite.com/myApp.ipa)
  11. Click Save. This will save a plist & an ipa file for you.
  12. Place these files on your server with a link formated like this:
    <a href="itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=http:/oursite.com/myApp.plist" id="text">
  13. Go to this page from your device and click the link to install the app
Simon East
  • 46,575
  • 14
  • 130
  • 124
tiltem
  • 4,572
  • 3
  • 21
  • 26
  • 7
    it is saying cannot connect to server. – swati sharma Dec 20 '12 at 13:17
  • Also follow up from this post if someone gets No Packager exist option http://stackoverflow.com/questions/5271496/xcode4-ios-4-3-no-packager-exists-for-the-type-of-archive – Rahul Vyas Jan 17 '13 at 11:32
  • I am facing the same problem, can you please tell me the correct way that how can i publish my app with >3000 employees using IOS Enterprise program? Thanks – Anand Gautam Jan 09 '14 at 17:46
  • It is the same process for this. Make sure you have the Code Signing Identity and Provisioning profile set for a Distribution certificate and a provisioning profile that was made for Enterprise Distribution (not AD HOC). Then Archive and create release link as shown above. – tiltem Jan 10 '14 at 23:39
  • 1
    I was having issues here, my problem ended up being the app had a space in it's name but instead of just being %20 the HTML file had to double escape %2520 and the plist had to be single escaped %20 in order to get everything to work together – Stuart P. Apr 01 '14 at 16:43
  • Starting with iOS 7.1 the plist needs to be at an **https** end point. See this [SO question](http://stackoverflow.com/q/20276907/542911) for details. – Regan Sarwas Apr 04 '14 at 23:48
  • Apparently when I run an 'Export' it only creates a .ipa file. I cannot seem to find the generated .plist file. Do I need to create one? – jsetting32 Jul 02 '15 at 18:13
  • @jsetting32, in order to get plist file you have to check “Include manifest for over-the-air installation.” at the final step. – Ruslan Mansurov Jul 19 '16 at 13:52
5

Probably the best way to distribute your enterprise mobile app and then securely manage users, groups, data and devices is using a Mobile Device Manager (MDM) tool suite.

iOS provides specific APIs that support enterprise deployment via MDM products with API level features like Per App VPN connections that allow you to firewall a DMZ application server to only connect to a specific signed client iOS app. The vendors also provided authentication SSO integration and encrypted storage on the devices to sandbox your enterprise apps from other untrusted personal apps on a BYOD device.

Here's the Gartner 2013 review of MDM products:

The 3 major players are now: Air Watch, Mobile Iron and Citrix XenMobile.

NOTE: I don't work for or have a vested interest in any MDM vendor.

Tony O'Hagan
  • 19,136
  • 3
  • 58
  • 65
5

There are two solutions

  1. Try testflightapp.com

    It does everything for you. It even has a SDK which I found very useful in debugging scenarios with logs and crash reports.

  2. If you are looking to have your own hosted solution for the enterprise then http://hockeykit.net/ is the best bet.

    It has a client application which makes the upgrade process painless. It also have a server side code which you can deploy on your server.

    https://github.com/TheRealKerni/HockeyKit


  1. Update 2013-11-23:

    We have been using Diawi happily for quite some time.

Simon East
  • 46,575
  • 14
  • 130
  • 124
palaniraja
  • 10,030
  • 5
  • 37
  • 74
4

You can also use my shell script that will help you a long way with generating the necessary files and links:

https://github.com/sveinungkb/ios-ota-buddy

Sveinung Kval Bakken
  • 3,676
  • 1
  • 22
  • 30
2

I've created tool (it's beta, so please be patient with it:)) for generating manifests from ipa file online:

http://manifest-generator.knejzlik.cz/

It generates plist with index.html file. All you need is to put content of downloaded archive to your site.

JakubKnejzlik
  • 5,753
  • 2
  • 35
  • 39
2

You do not need to manage UDIDs if you are using an enterprise profile.

To install an enterprise app you need a provisioning profile built with your distribution certificate on each device. See Does an iPhone Enterprise provisioning profile need to specify phone UUIDs like an ad-hoc provisioning profile does?

Community
  • 1
  • 1
railwayparade
  • 5,106
  • 1
  • 37
  • 49
  • as a small aside, is it correct that it is now possible to embed the provisioning profile within the app bundle so that no additional setup at all is required on the user's side? – Tom Apr 02 '13 at 20:48
  • @railwayparadeI am facing the same problem, can you please tell me the correct way that how can i publish my app with >3000 employees using IOS Enterprise program? Thanks – Anand Gautam Jan 09 '14 at 17:48
  • See tiltem's post above. Basically you need to build the app with the enterprise profile then place it on a webserver. Your employees then go to that site and install the app. – railwayparade Jan 09 '14 at 21:26
1

You can use InstallFish.com for this.

It allows OTA distribution for both IOS and Android. It also has a feature to automatically get the UDID and create your own appstores.

You will still need to provision them via your enterprise account but it makes the whole process of OTA installs much easier, especially for enterprise distributions.

Trickycm
  • 276
  • 2
  • 9
0

You can use hockey, diawi etc. but sometimes you just want something simple that allows you to host it on your server. I was searching for a simple, basic php script that can do this but did not found any that suited my needs so I wrote a simple single php file server by myself and you can find it here:

https://github.com/leszek-s/LSIPASERVER

It has a list of all uploaded ipa files, upload page with password protected upload and each uploaded ipa has it's own page so you can send a link to specific uploaded ipa to someone. Feel free to use it on your own server.

Leszek Szary
  • 8,558
  • 1
  • 49
  • 46