I have created an application for a company that I need to deploy. The application is for internal use only so it will not be available on the App Store. Do I need a UDID for each individual on whose device the app will be installed? That would be impossible since there are 500 employees. Does anyone have a good documentation or experience on deploying the iOS iPhone application using the Enterprise Developer Program only.
With the Apple ENTERPRISE Developer Program you can NOT distribute an App in the Apple AppStore.
Its purpose is to collaborate an In-House App in your own company.
The Enterprise account does not necessarily need the UDID of your target devices. You can for instance also use a link which remotely installs the app directly on the device.
You can find more details here: https://developer.apple.com/programs/enterprise/
If you are trying to deploy applications to customers/users on a production/long term basis, you can deploy an applications outside the apple store in three ways:
manually via iTunes
directly via iTunes Configuration utility
via weblink (sent via mms, email, webbrowser etc.)
In order to distribute an application this way, the application must have a special corporate signature, and each device must have a matching corporate signature installed manually.
The best overall explanation for the process is available at this link.
If you're just testing on a handful of test devices, then you I would suggest two approaches:
a dev release to a test device follow step by step instructions here.
Or you can use a helper application to deploy a beta release: testflightapp.
You can do distribute your iOS app to only a particular set of people (in your case, your company employee), by following these procedure
Get a apple enterprise developer account
Create a distribution certificate and provisioning profile
(In-House) using your enterprise developer account
Archive the ipa file using the created certificate and
provisioning profile
While saving the ipa, click on the check mark. So, the plist file
is also created.
Host the plist and ipa file in your server
Include a download html file with a href tag with src
"itms-services://?action=download-manifest&url=https://mydomain.com/apps/MyInHouseApp.plist"
Now when you click on the link from your device the app will get downloaded.
I don't agree with the previous answer. Check this document page 26.
MDM servers can deploy both App Store apps and in-house enterprise
apps to devices over the air. Both paid and free App Store apps can
be managed by an MDM server using Volume Purchase Program (VPP)
managed distribution.
Once you have VPP and Enterprise Developer account you could be able to install apps in the app store or company owned apps into the managed devices.
Further for just deploying the in-house app you could follow this 9 step process.
If you need to deploy to many devices i suggest AirWatch. I've used it many times, it can be a bit frustrating to set up but once you have it working its very nice to have.
Testflight still requires udid and the limit is 100 for 1 year before you can reset. Enterprise deployment is best method for in house apps.
Related
I build some iOS app for other people. With android it's quite simple, I gave the .aab to the guy and they add themself this .aab in the play store. However, I think, I can't do the same for iOS or I m mistaken?
Is there a way to compile the app on my computer and gave my client a binary so he can publish it under his account? I m under Delphi if it's matter.
What worry me a lot is that I need to compile a dozen of a white-labeled app every time I Update the main core app and I want to automatize the process. How can I do this ?
An iOS app is compiled to an .ipa file, which can be deployed to a device or uploaded to the App Store.
However, iOS apps have many requirements beyond just deploying the binary.
Each customer will have to obtain a Developer Certificate that identifies them with the app(s) you develop on their behalf. They will have to provide those certificates to you.
In order for each customer to then install/upload your app binary(s) on their own accord, they will have to register App IDs with Apple, and give you those IDs so you can configure it into your projects as needed.
Each customer will also have to provision those IDs according to how they will be installed (Ad-Hoc vs App Store), and give you the provisioning profiles so you can configure them into your projects as well.
This is all covered in Embarcadero's documentation:
iOS Mobile Application Development
Acquiring an iOS Developer Certificate
Provisioning an iOS Application
Creating an App ID for Your Application
Creating and Installing Your Provisioning Profiles
Configuring Your Provisioning Profiles on RAD Studio
Deploying Your Final iOS Application
Deploying Your iOS Application for Ad-hoc Distribution
Deploying Your iOS Application for Submission to the App Store
I'm currently developing an iOS app for a company as a consultant and they explicitly asked that the app should not be visible in the public app store but I need to distribute to the employees and contractors.
What are the necessary steps in order to achieve this goal? I've found info on the web about the Apple Enterprise program but the procedure for the distribution is somewhat unclear to me, as the documentation I found is messy.
Could someone please explain what do I need and what are the steps to follow in order to distribute the app in such fashion? I've made clear the steps to get to the .ipa file, I need to put the file on the devices.
Thank you.
You can build your own server and host the application there itself.
You need to uploaded the IPA file on the server and create an HTML page through which it can be installed directly in the device.
This method is called Over The Air distribution. TestFlight uses the same method to do so.
Please refer this link for complete process:
http://aaronparecki.com/articles/2011/01/21/1/how-to-distribute-your-ios-apps-over-the-air
Create a distributed provision file for you app(You need to add the device identifier who want to install the app).
Build you app and distributed with ad hoc
Then the employee can install the app from itunes.
You can also enable the employee to install from safari, please refer here for more detail information.
If you release only a file.ipa to install that you need the jailbreak on the device, that's if is a big company is impossible, but you have a 2 possible ways:
1) huge an slow but is effective, finish you app and pass the project on a laptop, create new buy a new developer program only for this company, setUp the laptop with new certificate and install the app on all company device manually one by one, ins very slow and huge process, but it work, no app on appStore, and no body know that your project exist.
2) publish on app store with AdHoc provisioning profile, have 100 device per App, but you can publish more same app with different name ex: App1, App2 ext.
The app is on appstore, but not visible, only the device with AdHoc Provisioning Profile can install the app.
3) make a jailbreak on a device company heheheh
Hope this help you
Firstly, the app store is the the primary route for App distribution for iOS.
That said, I have done beta app distribution in the past using test flight.
http://testflightapp.com/
This size has usually been small, but you are usually limited by Apple to 100 ad-hoc devices per year. If your install base is going to exceed that, then you may need to look into other methods. Such as enrolling in the Apple's enterprise Program, which depending on the size of the company you're working for, might be a better option.
https://developer.apple.com/programs/ios/enterprise/
I programmed an app for a company and would like to install the app on their iPads without having to submit the app to the App Store since its a commercial app for just this company. Is this possible without connecting each iPad to my MacBook and putting a developer certificate on it.
Is there another way? What about using an URL-link or QR-Code (linking to this url)?
Thanks in advance
Your question is about installing apps without iTunes and the Apple App Store. This is entirely possible and supported by Apple but you are still bound by your developer account's ability to only build signed binaries for 100 devices for testing purposes only.
You can distribute your apps over the air via services like hockeyapp.net and testflightapp.com (free) but these services are just hooking into the iOS system's ability to install signed binaries over the air which has been possible since iOS4. There are several open source projects that provide the bare bones HTML and Javascript/meta tags to install signed binaries over the net - one such one is iOS Beta Builder
If you are creating Enterprise apps for clients (that will exist in production, not just a development environment) then your only legitimate way to provide your clients with apps that won't expire is to use Enterprise Developer Account. The enterprise account has no device limits but the apps you sign with enterprise certs phone home to Apple each time they're launched and are strictly only allowed to be used for a single company and their current employees.
It is because of Apple takes 30% of all the payments, isn't it?
The only way I see is to create usual web-site which runs via browser without installing
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?
As of December 2011, these are the steps:
Create a provisioning profile in your Apple Enterprise account
Set this as the Code Signing Identity under the Build setting of your app.
Make sure the Bundle ID matches that of the provisioning profile.
Select Product > Archive to build IPA file.
Click Share (aka Distribute) button after selecting your Archive.
Set Contents radio button to iOS App Store Package (.ipa)
Make sure Identity in dropdown is the one used from Enterprise account.
Click Next
Select the check box "Save for Enterprise Distribution"
For Application URL put in the URL that points to where the ipa file will be placed (example: http://oursite.com/myApp.ipa)
Click Save. This will save a plist & an ipa file for you.
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">
Go to this page from your device and click the link to install the app
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:
http://www.business.att.com/content/whitepaper/Gartner-MDM-MQ.pdf
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.
There are two solutions
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.
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
Update 2013-11-23:
We have been using Diawi happily for quite some time.
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
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?
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.
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.
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.
TestFlight offers over-the-air beta distribution of iOS apps (on non-jailbroken devices). How can this be done? Is this an iOS feature, or a vulnerability exploit?
This article showed how Apples OTA implementation works and can be used outside enterprises as well: ios wireless app distribution
The complete process is documented by Apple.
Apple also published documentation and sample code for registering devices and get the UDID by using profiles, so your website can detect which device is calling.
Some additional solutions with different strenghts:
iOS Beta Builder, a Mac Application to create the website by using a build. Simply upload the resulting files to your webserver.
Diawi: Simple Web service. Upload your IPA file, optionally set a password and send a link to your testers.
AppSendr: Web service for beta build hosting, similar to Testflight, but does not include the device registration process. But provides deployment utilities to automatically upload new versions.
HockeyKit: Open source project for hosting beta versions on your own PHP5 server with additional functionalities like an client for In-App-Updates, automatic device specific web sites and handling multiple applications. Completely file and directory based.
HockeyApp: Web Service for beta build hosting, In-App-Updates, Statistics, and including device registration, invite and recruitment. Also provides server side crash report collection, symbolication (for all threads) and crash grouping for beta and app store apps (iOS + Mac). SDKs are open source, using HockeyKit, QuincyKit and PLCrashReporter (which is the only safe solution on how to do crash report collection on iOS, see this article.
Note: I am the main developer of HockeyKit and QuincyKit, and one of the developers of HockeyApp.
This was possible before TestFlight rolled out a service. The technique stemmed out of the enterprise distribution mechanism. Since 4.0 devices have supported install from web.
Remember - you still need to sign the beta distribution for a select set of UDIDs you can't just willy nilly install it on any device. All they are doing is taking the email the IPA step out of things.
See:
http://www.alexcurylo.com/blog/2010/08/27/wireless-ad-hoc-distribution/
Update: I want to say that Test Flight is one of the most helpful tools I've used when developing though. Just taking the IPA emailing out of the picture was an understatement- I was just trying to call out the technical mechanism. They do a fantastic job managing the whole beta process. Getting new devices enrolled. Notifying users etc.
Testflight basically uses the normal Ad Hoc as already stated.
For this to work, you need the UDID for every device in order to add it to the Ad Hoc profile, re-compile the app with the new profile an redistribute the new build.
You can get the UDID with the help of the OTA Authentication Request. This is actually a step that is done in MDM before the actual profile is rolled out to the device. It basically asks the device for further information about itself and send it back to a self specified server.
The first step is documented here: Apple OTA Configuration
I guess Testflight uses this right after the registration process to collect the UDID, phone name, ...
Yes this is a core feature of iOS for Enterprise Customers who wish to distribute OTA.
Presumably you would pass your UDID over to TestFlight along with the app and they use their Enterprise Licence to send the app to you. I'm sure I'm missing a lot of the technical details but if you want to know more, Apple has a video on this from WWDC 2010.
Login to developer.apple.com, go to WWDC 2010 Videos and use the link to get to the vidoes. The video you want is "Session 108 - Managing Mobile Devices". It is very informative about what is possible with OTA and the steps you have to take to do OTA provisioning.
Stock iOS devices are "vulnerable" to running the user loading Ad Hoc apps from any developer who has that device's UDID, and registers that UDID among their 100 allowed devices on Apple's developer portal.
OTA distribution is just another way to install an Ad Hoc beta test distribution from an enrolled developer.