Create iOS ipa for In-House Distribution

Couple of month ago in the era of iphone 6, the company I work for was officially migrate official mobile device from BlackBerry to iphone 6. By the time of migration, development team also got initiative request from users to create an app for android. On the other hand, we also want to anticipate another request for ios platform. To simplify the porting to another platform, we use HTML5, Kendo UI</a> and Apache Cordova to build the app. The app just consumes data from REST services. The other requirement is the app will not be published to App Store. We have internal mobile device management (MDM) called MobileIron</a>.

In this post, I will not write about how to build the app with Apache Cordova, I just want to focus on how to create ipa distribution package for in house enterprise distribution. The steps should be the same for app that is created with native. I also will not discuss about how to deploy to MDM.

The first requirement is we have to be a member of iOS Developer Enterprise Program which costs $299. The steps how to register is clearly explained in apple developer site.

At the time of write this post, my development environment :

  1. OS X El Capitan (10.11.3)
  2. Xcode (7.2)
  3. iphone 6 (iOS 9.2)

Before we start create ipa package, ensure our code runs well as expected on iphone simulator.

The steps of creating ipa package for distribution basically similar to deploying to real device for development as explained on my previous post. In this post, I will only capture the things that are difference between them.

Certificate

While creating certificate preparation in Apple Developer portal, showed its slightly difference from my previous post

In this case, I choose In-House and Ad Hoc distribution option instead of iOS App Development, since we plan to create ipa package for In House distribution. If we notice upon the above screenshot, in the Production section has option for In-House and Ad Hoc distribution. Meanwhile on my previous post has App Store and Ad Hoc. The difference because of the apple id I used on this post is enrolled as an iOS Developer Enterprise Program, and on my previous post uses Individual Apple Developer Program. The detail difference between them and other developer license schema can found here.

The rest of preparing certificate installation for production is the same as certificate installation for development.

App IDs

The step of registering app Bundle ID is the same as the previous post. If we already registered for development, we should not do it again.

Provisioning Profiles

Creating provisioning also similar to the creation Provisioning for Development. Except at the wizard option we need to choose one of in the Distribution group instead of Development group. In this sample I select In House, since the ipa package we created will be deployed via MDM.

The next step is opening Xcode and add apple id via Xcode Proferences > Accounts as I did on previous post. Now we should get the similar picture as follow.

Ensure distribution profile already downloaded. If not we can click download button on the list above of picture.

The next thing is opening iOS project with Xcode and ensuring we select Distribution Profile we installed on Code signing section group both on Project and Target.

The next step is select Product menu > Archive, then follow the wizard.

When the wizard finish, by default Xcode will create ipa package for us on desktop.

That’s all my share and thanks for reading :)