Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Transition from iphone app store to enterprise development

I have an app published on the AppStore and I want to migrate it to an enterprise developer account for in-house distribution. I read in the enterprise documentation that:

If you want users to keep the app’s data stored on their device, make sure the new version uses the same bundle-identifier as the one it’s replacing, and tell users not to delete their old version before installing the new one. The new version will replace the old one and keep data stored on the device, if the bundle-identifiers match.

Now, assuming we keep the Bundle ID the same between the AppStore binary already installed and the enterprise binary signed with a different certificate... it should overwrite the same app on their phone rather than create a second app.

I contacted Apple support and they said "No, you will have 2 apps installed if you do not instruct the clients to uninstall their old one". Is this true?

like image 904
Tom Fobear Avatar asked Jul 17 '13 20:07

Tom Fobear


2 Answers

EDIT: I'm leaving my original answer below for conversations sake as there is good dialogue below. As @mja noted when you initially create an app ID it is associated with one of a few available prefixes to your developer portal and that prefix may be used by iOS to associate & differentiate between apps.

EDIT2: When I go into my Enterprise Portal and try to create an app ID with an identical value to an existing app ID but with a different prefix it still blows up on me and says:

An App ID with Identifier 'com.mycompany.myapp' is not available. Please enter a different string.

ORIGINAL Answer: The latter part is incorrect - iOS devices use the Bundle Identifier to differentiate between apps. I can have 20 apps labeled "Cool App" on the same iOS device so long as they have unique bundle identifiers such as com.mycompany.coolapp.1 - com.mycompany.coolapp.20. Likewise (and I've done this accidentally) if I open two projects, both of which have bundle identifiers com.mycompany.myapp, and run one right after the other the last app to be run will be installed on the device whereas the previous app will be overwritten.

Regarding the app data sustaining itself I have not tested that though I'd be interested in what happens for you!

like image 173
Dan Avatar answered Oct 08 '22 11:10

Dan


I have managed to achieve this, so that the 'enterprise' build of the app overwrites an 'app store' distributed version.

This does not use the exact same bundle ID but does achieve what OP asked in his original question.

How I did this was, in my enterprise account, create a wildcard bundle identifier with the first two parts the same as the bundle identifier for our production app, for example:

Production : com.xyz.abc
Enterprise : com.xyz.*

Using this wildcard bundle ID, the app can be distributed and will overwrite any versions installed via the app store (user data will still persist). The prefix does not seem to matter here.

One drawback of the wildcard bundle id is the fact that you cannot use APNS etc.

like image 27
larrysanchez Avatar answered Oct 08 '22 12:10

larrysanchez