Compiling and Distributing an iPhone/iPad Enterprise (in-house) Application

Introduction

You can distribute iOS applications in two basic ways: through an appstore or as an in-house application. In the following, we describe latter, the in-house apps.

Prerequisites

To be able to compile, package, and distribute in-house applications, you need to join the Apple Enterprise Developer Program. The current price is 299 USD per year.

xCode

When compiling and packaging the application, you need to use an Apple ID in the xCode application. xCode is able to fetch the provisioning profiles and signature identities associated with the Apple ID automatically. When you package an application, you need to choose the correct provisioning profile, so that the package will be signed correctly.

Packaging the Application

  1. In xCode, choose for the simulator iOS Device
  2. Choose from xCode menu Product item Archive
  3. Choose the package to be distributed from the package list
  4. Click Export... in the right column
  5. Choose Save for Enterprise Deployment
  6. Choose the correct development team (if there are more than one)
  7. The system should automatically recognise the correct provisioning profile and use it
  8. Save the signed IPA apckage to the desired location

Provisioning profiles

Provisioning profiles and applications are associated using a bundle identifier. The bundle ID is usually a reverse FQDN, which has been appended with the application name, such as com.example.myapp. To distribute such an application as an in-house application, the Apple ID that is used for packaging the application in xCode must be part of a team that is registered in the Apple Enterprise Developer Program. Additionally, you must have a provisioning profile for the application in the Apple Developer portal. Its identifier must be the same as the bundle ID of the application.

You should notice that the provisioning profile of an application must be renewed every year.

App distribution guide from Apple:

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012582