Transition from iphone app store to enterprise development
Asked Answered
H

2

7

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?

Habitancy answered 17/7, 2013 at 20:29 Comment(1)
Have an answer for this? I have the same question now.Brottman
L
2

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!

Lutero answered 17/7, 2013 at 20:36 Comment(5)
so I am correct to assume, even though the app store update was signed under a different company, that the enterprise update will overwrite it as long as the bundle identifier is exactly the same?Habitancy
You're making me start second guessing myself when you just said "different company".... I may withdraw my answer since I can't confidently speak to what happens with accounts across companies :/Lutero
I think the bundle id has a prefix (seed), and the seed is unique per dev account.Electrokinetic
I think @Electrokinetic is right. When you create the app identifier initially it appends the prefix to the user-generated bundle ID. I completely forgot about that.Lutero
Well... then the question becomes what is the easiest way to transition to the app with the new identifier...Habitancy
H
2

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.

Hallam answered 7/8, 2014 at 9:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.