1

I have an iOS app that is to be distributed among the employees of the company. I know that for this purpose we need to take enterprise developer account. The doubt that i have is that how will i distribute the builds. Does apple provide an enterprise store? If not suppose i distribute the build via services like diawi.com or something like that, how will the updates be installed. When i am rolling out an update, should the user remove the older version and then re-install it.

I tried to search in many places and i could not get a clear answer. Hope someone can help me clear my doubts..

Thanks in advance

Jobins John
  • 1,265
  • 23
  • 45
  • Jobins, I think you can use an Ad Hoc distribution; with such a group. You can distribute it be simply copying the ipa file to a shared disk, like a dropbox and telling people to install it thru iTunes. As to how to manage it beyond that; you need to update the version and build numbers, resign it and distribute using the same method? Does that sound feasible? – user3069232 Feb 18 '16 at 10:05
  • @user3069232 There are almost 260+ users for the app that i am developing. If i am distributing as an AdHoc build then i will have to collect this much users UDID to create the profile. Also there is a chance that new devices will come in. Also when the updates are rolled out, should the users remove the existing app and reinstall or it will build itself. – Jobins John Feb 18 '16 at 11:12
  • Jobis have you tried building an Ad Hoc distribution; you don't need to account for the users who will be installing the software, it is licenses thru your ID. No limits for Ad Hoc; see this link. http://stackoverflow.com/questions/5916827/how-distribute-private-program-to-more-than-100-devices – user3069232 Feb 18 '16 at 11:37
  • @user3069232 Thanks for your opinion. Can you please help me with the update scenario also. – Jobins John Feb 18 '16 at 11:39
  • If you release a newer version of your app, then when they click on the ipa; in theory their device will recognise its a newer version and offer an update route. Beware however; I am working in an environment that is almost 100% Apple, so everyone has a MBP/MBA and an iPad. Don't know if an iTunes running under Windows is as functional as the Apple version; you need to do some tests; let me know I'd be interesting to find out. – user3069232 Feb 18 '16 at 11:46
  • @user3069232 Thanks for your feedback.... Really Appreciate it., – Jobins John Feb 18 '16 at 12:02
  • check this link http://stackoverflow.com/questions/8136307/enterprise-in-house-app-distribution – Anil solanki Feb 18 '16 at 13:25
  • Posting a link where you will find information for your need http://stackoverflow.com/questions/8136307/enterprise-in-house-app-distribution – Anil solanki Feb 18 '16 at 13:27
  • http://stackoverflow.com/questions/5916827/how-distribute-private-program-to-more-than-100-devices?answertab=active#tab-top – Anil solanki Feb 18 '16 at 13:27

1 Answers1

4

You can distribute with an Enterprise Certificate to technically as many devices as you'd like, there are some legal limitations thru the Agreement thou.

The users would install the app by a website provided by you. On this website you would have a link to the manifest.plist like this. The manifest.plist can automatically be generated by Xcode when using Archive > Distribute > Enterprise

<a href="itms-services://?action=download-manifest&url=https://yourserver/yourpath/manifest.plist">Download and Install</a>

After downloading and first launch, user would also go to Preferences > General > Profiles > your company name > Accept

This is because Apple recommends you to distribute thru an Enterprise Device Management (which is completely another question and topic).

To update the app, you'll need to check on launch if there is a newer version and the point the user to the new IPA.

static NSString* plistURL = @"https://yourserver/yourpath/manifest.plist";

@implementation YourAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self performSelectorInBackground:@selector(checkForUpdate) withObject:nil];
    return YES;
}

- (void)checkForUpdate;
{   
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:plistURL]];
    NSData *plistData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    if (plistData) {
        NSPropertyListFormat plistFormat;
        NSDictionary *temp = [NSPropertyListSerialization propertyListWithData:plistData options:NSPropertyListImmutable format:&plistFormat error:nil];        
        NSString *onlineVersion = [[temp valueForKeyPath:@"items.metadata.bundle-version"] lastObject];
        NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

        if (! [onlineVersion isEqualToString:appVersion]) {
            dispatch_async(dispatch_get_main_queue(), ^{
                 UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"A new version of «Your App» is available" 
                                                             message:@"Would you like to update now? Caution: Since the app is very big, please install it while connected to a Wi-Fi network."                                                                 delegate:self 
                                                   cancelButtonTitle:@"Cancel"
                                                   otherButtonTitles:@"Update...", nil];
                 [dialog show];
            });
        }
    }
}

Documentation by Apple is extensive and good: Distributing Apple Developer Enterprise Program Apps

mahal tertin
  • 3,239
  • 24
  • 41