In-House Distribution for Xamarin.iOS Apps
This document gives a brief overview of distribution of applications In-House, as a member of the Apple Enterprise Developer Program.
Once your Xamarin.iOS app has been developed, the next step in the software development lifecycle is to distribute your app to users. Proprietary apps can be distributed In-House (previously called Enterprise) through the Apple Developer Enterprise Program, which offers the following benefits:
- Your application does not need to be submitted for review by Apple.
- There are no limits to the amount of devices onto which you can deploy an application
- It is important to note that Apple makes it very clear that In-House applications are for internal use only.
It is also important to note that the Enterprise Program:
- Does not provide access to iTunes Connect for distribution or testing (including TestFlight).
- The cost of membership is $299 per year.
All apps still need to be signed by Apple.
Testing your Application
Testing your application is carried out by using Ad Hoc distribution. For more information about testing, follow the steps in the Ad-Hoc Distribution guide. Be aware that you can only test on up to a maximum of 100 devices.
Getting Set Up for Distribution
As with other Apple Developer Programs, under the Apple Developer Enterprise Program, only Team Admins and Agents can create Distribution Certificates and Provisioning Profiles.
Apple Developer Enterprise Program certificates will last for three years, and provisioning profiles will expire after one year.
It is important to note that expired certificates cannot be renewed, and instead, you will have to replace the expired certificate with a new one, as detailed below.
Creating a Distribution Certificate
Browse to the Certificates, Identifiers & Profiles section of the Apple Developer Member Center.
Under Certificates, select Production.
Click the + button to create a new Certificate.
Under the Production heading, select In-House and Ad Hoc:
Click Continue, and follow the instructions to create a Certificate Signing Request via Keychain Access:
Once you have created your CSR as instructed, click Continue, and upload your CSR to the Member Center:
Click Generate to create your certificate.
Download the completed certificate and double-click on the file to install it.
At this point, your certificate should be installed on the machine, but you may need to refresh your profiles, to ensure that they are visible in Xcode.
Alternatively, it is possible to request a Certificate via the Preferences dialog in Xcode. To do this, follow the steps below:
Select your team, and click View Details:
Next, click the Create button next to iOS Distribution Certificate:
Next, click the plus (+) button and select iOS App Store:
Creating a Distribution Provisioning Profile
Creating an App ID
As with any other Provisioning Profile you create, an App ID will be required to identify the App that you will be distributing to the user's device. If you haven't already created this, follow the steps below to create one:
- In the Apple Developer Center browse to the Certificate, Identifiers and Profiles section. Select App IDs under Identifiers.
- Click the + button and provide a Name which will identify it in the Portal.
- The App prefix should be already set as your Team ID, and cannot be changed. Select either an Explicit or Wildcard App ID, and enter a Bundle ID in a reverse DNS format like: Explicit: com.[DomainName].[AppName] Wildcard:com.[DomainName].*
- Select any App Services that your app requires.
- Click the Continue button and following the on screen instructions to create the new App ID.
Once you have the required components needed for creating a Distribution Profile, follow the steps below to create it:
Return to the Apple Provisioning Portal and select Provisioning > Distribution:
Click the + button and select the type of Distribution Profile that you want to create as In-House:
Click the Continue button and select App ID from the dropdown list that you want to create a Distribution Profile for:
Click the Continue button and select distribution certificate required to sign the application:
Click the Continue button and enter a Name for the new Distribution Profile:
Click the Generate button to create the new profile and finalize the process.
You may have to quit Visual Studio for Mac and have Xcode refresh it's list of available Signing Identities and Provisioning Profiles (by following the instructions in Requesting Signing Identities section) before a new Distribution Profile is available in Visual Studio for Mac.
Distributing your App In-House
With the Apple Developer Enterprise Program, the licensee is the person responsible for distributing the application, and for adhering to the guidelines set by Apple.
Your app can be distributed securely using a variety of different means, such as:
- Locally through iTunes
- MDM server
- An internal, secure web server
To distribute your app in any of these ways you must first create an IPA file, as explained in the next section.
Creating an IPA for In-House Deployment
Once provisioned, applications can be packaged into a file known as an IPA. This is a zip file that contains the application, along with additional metadata and icons. The IPA is used to add an application locally into iTunes so that it can be synced directly to a device that is included in the provisioning profile.
For more information on creating an IPA see IPA Support guide.
This article gave a brief overview of distributing Xamarin.iOS applications In-House.
We'd love to hear your thoughts. Choose the type you'd like to provide:
Our feedback system is built on GitHub Issues. Read more on our blog.