4
votes

I'm developing an iPhone application for a company, they do not want to publish the app to the app-store. So, i have enrolled with iphone enterprise developer program with 299$. My question is how to distribute App to internal company employees without registering their UDIDs? Do i need to send modified .app file with provision profile to individual App user through mail to install this iPhone application? I`m familiar with IOS developer program but the iPhone Enterprise Developer Program is designed not to allow you to publish apps to the App Store. So can anyone please suggest me that How to distribute the app to our company employees and how an updating this same app works ? I have seen some answers related to this but it was not clear.

Thanks in advance.

3

3 Answers

4
votes

If you build and sign your application with the enterprise distribution In House certificate, you do not need the UDID of any device. The .ipa will install on any device. You must ensure when distributing the application that the file is not share to non employees.

We actually used "Over the Air distribution". You can host your app on a dedicated server protected with user access and employee can install the app by opening a simple URL in Safari on the iPad. More info in the official documentation:

http://www.apple.com/business/accelerator/deploy/app-distribution.html

Actually when you archive in XCode and then choose distribute, if you choose distribute "Save for entreprise or Ad Hod deployment" it will generate the files you need to put on the server at the end. Just tick the "Save for Entreprise Distribution" in the "Save as" window at the end.

4
votes

I have done this several times. Prequisites: - An Apple iOS Enterprise Developer program - A web server with SSL Steps:

  1. Create your app ID (in the apple provisioning profile - further "" ).

  2. Create your DEVELOPMENT & PROVISIONG profile on the apple provisioning portal. NOTE: In order to be allowed to continue you will have to include at least one device on which it will be tested. This means you must add at least one GENERAL device with its UDID. This GENERAL device does not have to be your costumers device. I set a iPhone 3GS for a iPad project. I never tested it and never got the iPad(s) UDID(s) on which I tested my app.

  3. Create your iPhone/iPad project

  4. Copy your app ID from the apProf - "Identifiers" for example: "com.MyCompanyName.MyAppNameShouldBeHere" into your Xcode project under "TARGETS" - "Info" - "BundleIdentifier". IMPORTANT:The app ID HAVE TO BE THE SAME IN apProf and Xcode.

  5. Finish you app and when ready for testing go to step 6.

  6. In the top right corner change the testing device to "iOS Device" (instead of iPhone simulator or any other simulator). NOTE: There is no need to connect a device. When you connect a device it automatically gives you the option to test it on the device if the device already has a valid provisioning profile on it.

7.At the top of Xcode go to "Product" and go "Archive".

7.1. If you get a Error try and let Xcode fix it.

7.2. If Xcode can not download/acquire the provisioning profiles created online in step two go to apProf and download the profiles. After that I always double clicked the profiles and copied the names into "TARGETS" - "Build settings" - "Code signing".

7.3. You can also go to "Xcode" - "preferences" - "accounts" - "view details" and hit the little round refresh button. This will refresh all the provisioning profiles from profPor. NOTE:Try this few times. I had some problems and got it always working. When you fix it once it always works.

  1. After the you finish step 7. you need to wait a bit for the archiving process to pass. After that you should see the organizer window. Inside the window to the right is a small button "Distribute". Click it and select the OTA (over the air). I dont know the correct name but the other two options are clearly not the distribution way you want because one is the app store and other is something else.

  2. After you selected the OTA distribution method YOU DO NOT NAME YOU APPLICATION AND CLICK CONTINUE. I made this mistake few times. You need to check the "save for enterprise distribution" checkbox just below the browser screen near the cancel button. After that the window gets bigger and allows you to fill aditional information. Two things are important:

9.1. The URL of your SSL server : example. https://myPrivateserver.some/MyAppName.ipa NOTE: The "MyAppName.ipa" has to be the same as in the top of this window.

9.2. The app name. This name you can write what ever you want. I recommend you do it smart like the date or changes because if you set several links on you test page you might want to see when the download is clicked which version of the app you are downloading. This app name will be presented before the installation & download in the pop window. It is self documenting and helps you a lot if you do many changes in a short time.

  1. After you receive the two files (the .ipa and .plist) you copy those files onto your web server with a ftp client. However you need to copy them in the correct path/address you wrote in step 9

  2. The last step is to create a index.html in the same directory with the correct link path. You can find more informations on the link path and why you need a ssl here:

Enterprise app deployment doesn't work on iOS 7.1

or simply put use the following line

itms-services://?action=download-manifest&url=https://example.com/yourGeneratedPlistFile.plist

These are the steps that worked for me. At the end you just send the https://example.com/index.html link to the testers or alike. These steps always worked for me. If you need any further explanations let me know. If I wrote something wrong let me know to edit it. Hopefully it helps :)

1
votes

I recommend the same to everybody that asks this question, use TestFlight for that:

https://testflightapp.com/

You can invite people to your app in TestFlight and distribute it from there. They will receive an email with the new app every time you update.