Enterprise App Update Distribution on iOS 8

Enterprise App Update Distribution on iOS 8

I've also encountered this problem with our app distribution. We were able to fix this issue by 'faking' the bundle identifier inside the .plist using for download distribution, keeping our ipa bundle identifier the same.

For example, in your plist:

bundle-identifier
com.mycom.MyApp
bundle-version
0.2.2

change com.mycom.MyApp to com.mycom.MyApp.ios8fix

The app will be installed using a new app icon, which will disappear after install.

If you already have an install of the app, you will even see a new app icon during install. After the installation this icon disappears, but your already existing version of the app will be updated.
With a clean install the installation icon will disappear and the installed application icon will appear in place.

It looks like iOS 8 is caching the bundle identifiers and compares the requested installs with these cached ones. Most of the times you'll only see an popup asking for install, but nothing happens.

As Sean already noticed, this appears with xCode 6 GM and the official iOS 8 version. Devices which never installed your application before will have no problems to install the app.

iOS 8 - Can't Install Enterprise App

Looking through the console of the phone whist attempting to install one of my apps, I discovered:

Sep  9 12:16:56 iPhone misagent[94] : attempt to install invalid profile: 0xe8008011
Sep 9 12:16:56 iPhone installd[40] : 0x100484000 -[MIInstallableBundle _installEmbeddedProfileInBundle:]: Could not install embedded profile: 0xe8008011 (Expired)

Reasons unbeknown to me, apple invalidated half of my profiles and failed to alert me. After going into developer.apple.com find any invalid profiles:

Hit Edit - > Generate -> Download
Rebuild the application with the new profile.

However - The bad news still at least one of my apps is failing to install. Looking through the console gives me nothing. I am convinced this is an apple bug so have filed a radar: 17622725

I hope your issue is a profile problem otherwise we may have to wait until tonight 1800GMT to see if apple have fixed it.

EDIT

With iOS8 GM - I just get Waiting... - I will keep you informed with the bug report progress.

EDIT

After troubleshooting a few of fixes have been found:

Fix 1

As of iOS8, if the images you are linking to in the manifest plist do not exist - Apple will not install the application on the phone - The manifest being the file that you link to on the download page: itms-services://?action=download-manifest&url={url}

Make sure both full-size-image and display-image exist:


kind
full-size-image
needs-shine

url
https://{path_to_real_image}


kind
display-image
needs-shine

url
https://{path_to_real_image}

Fix 2

Enterprise applications will not install if they existed previously on iOS7 due to a bug with iOS8. An error appears in the console:

Ignore manifest download, already have bundleID: {bundle_id}

This can be fixed by temporarily changing the bundleID in the manifest file, but apple are aware as they marked the bug report as duplicated. After internal tests you an also fix the problem by resting the home screen layout General -> Reset -> Reset Home Screen Layout

Fix 3

If you see the application get into the installing... stage as opposed to loading... almost certainly the problem is the embedded provisioning profile has expired, to fix the download you will need to re-archive you application with a new, updated provisioning profile.

Fix 4

If you see the application get to the installing... stage and your provisioning profile is valid - Download the application whilst attached to your console. (Xcode 6 > Window > Devices > Bottom Left Button [v]), You will probably find that the install failed with Verification Stage Failed a little below will be the error message. In my case (Entitlements found that are not permitted by provisioning profile) - For this error goto developer.apple.com and update your App Identifier to include the correct service. For me App Groups needed to be enabled. Then regenerate your provisioning profile

Auto-updated iOS application for enterprise distribution

Consider getting a mobile device management service. Those are pricey.

OR:

First, enable over-the-air distribution. It will take $300/year enterprise agreement with Apple. Set up a website with the app's IPA archive and descriptive PLIST.

Then code a call-home HTTP request on app startup. You may pull/parse the same PLIST that describes the latest version; it has a bundle version in it. Compare that to the version of the currently running bundle.

When a new version is detected, the app shuts down, opens the browser on the download page. In a softer manner, just notifies the user that an upgrade is available.

I've never tried linking directly to the app's download package, but give it a try. In a perfect world, Safari would open up and ask "Do you want do download MyApp?" right away. In a not so perfect world, the user would have to click a link and then agree to download.

iOS 8.1 Can't install OTA Enterprise app - Unable to download app

I tried all combinations of answers and solutions for iOS 8.1. both on iPads and iPods with getting no step further. The solution that works is using apples testFlight.
I think that the old way is meant not to work so developers would slowly switch to testFlight.
I wasted two working days, hope this helps you rather then wasting time.

About testFlight: testFlight apple page

This simple tutorial lead me: iOS8 testFlight tutorial

UPDATE 1 (24.05.2015):

The enterprise distribution is working now for me.My colleague updated the SSL on the server twice. He updated some two keys that were used for SSL authentication since some certificates have been changed and updated. Also the distribution works on the following devices:

iPod (4th,8.2),iPhone 5S(8.3), iPad 2 (8.3), iPad 4(8.3).

However it doesn't work and doesn't give any error report (or error line) in Xcode - Window - Devices iPad 3 Console. I have been using successfully uploaded my app using Xcode 6.2+ IDE (currently 6.3.1.). In all cases no default plist file was added and I used the plist file from here : Xcode 6 enterprise plist file example

Can I update an iOS Enterprise App in the background like an App Store app can?

The answers in these questions will give you a correct answer:

  • Auto-updated iOS application for enterprise distribution
  • Update In-House Apps -- iOS Enterprise Developer Program
  • Updating iOS apps automatically with an MDM + Enterprise license

There is a solution for this though by Stephen McMahon, but I did not test it.

http://www.techhui.com/profiles/blogs/auto-updating-enterprise-or-ad-hoc-ios-applications

How to update ios6 enterprise apps over the air

Yes, it is possible. When you deploy an Enterprise application it requires a plist that contains metadata about the application. This metadata includes the version number that you can use to check for updates.

BOOL updateAvailable = NO;
NSDictionary *updateDictionary = [NSDictionary dictionaryWithContentsOfURL:
[NSURL URLWithString:@"http://www.example.com/pathToPlist"]];

if(updateDictionary)
{
NSArray *items = [updateDictionary objectForKey:@"items"];
NSDictionary *itemDict = [items lastObject];

NSDictionary *metaData = [itemDict objectForKey:@"metadata"];
NSString *newversion = [metaData valueForKey:@"bundle-version"];
NSString *currentversion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

updateAvailable = [newversion compare:currentversion options:NSNumericSearch] == NSOrderedDescending;
}

Once you detect the update is available navigate the user to the download URL

itms-services://?action=download-manifest&url=

and it will install over the existing version leaving all data in-tact and even upgrade the CoreData database if you setup auto migration and make changes.



Related Topics



Leave a reply



Submit