Uploading an updated version of app to the store with new app id - iphone

Our app is already there in app store. We now have integrated push notification support to our app and this requires new app id to be created, because our existing app id has got asterisk symbol in it. To enable push notification, app id should not have asterisk at the end, instead it has to have an unique name. So we decided to create a new app id which has got push notification enabled.
But if we do so, will we be able to upload our app as an update to our existing app which is there in the app store?, or our new submission will be considered as a new app? or what other problems we will be facing?
Thanks in advance!

We've gone through similar issues, and I'd like to put a disclaimer here that we don't actually have anything released yet, but we were able to use the same bundle identifier with a new app-id and a new provisioning profile, and it did overwrite the old app on the phone that had the old version.
I don't think the changed app-id will make a difference After all, if you have 10 different apps using the asterisk ID, they are still considered 10 different apps, so the app-id is probably more specific to the signing end. The Bundle-id is what determines the app's identity on the device itself, and so I think it's the same in the app store.

Related

Uploading app update with different Identifier

I'm working on app update which uses push notifications.
when i tried to enable the push notifications to the app id i find this:
Note: Only explicit App IDs can be used to access the Apple Push Notification service. Please use an existing App ID with a specific Bundle Identifier or create a new one.
so i made a new app id and it refused to upload it as an update due to difference in IDs
is there anyway to upload an app update with push notifications?
After uploading an app the first time you can't change the app id anymore! Your issue is that your are using a wildcard app id profile. You do not need to change the app id, you need to change the profile (created on iOS Provisioning Portal) for it.
When the app id you set in Xcode has been something like com.example.MyAppName and you created an app id profile on iOS Provisioning Portal which is only ABCD123400.* (ABCD123400 is your developer ID) or ABCD123400.com.example.* then you created a wildcard app id profile.
To use Push Notifications or Game Center you need to use an explicit app id profile. To get this one you need to create an app id profile for ABCD123400.com.example.MyAppName (exact app id, but don't change it, just replace the *-char!).

Updating live App ID for Push notifications

I have an app in the App Store which has a wildcard App ID. I want to add push notifications to it, but cannot as we have a wildcard App ID. This is the error I get:
Only explicit App IDs can be used to access the Apple Push Notification service. Please use an existing App ID with a specific Bundle Identifier or create a new one.
Can I create a new App ID for my app that is live in the store? Won't that cause issues? I'm confused as to how I can add push at this stage?
[EDIT]
Can I setup a new one using the same App ID, but use a new bundle identifier?
Cheers
You can create a new App ID using the App ID prefix you created before, the bundle indentifier or the App ID sufix must be something else. This can't be a wildcard character.
So for example you now use the following AppID; ABCDEFGHIJ.*
It must be transformed to something like this to use the push notification service; ABCDEFGHIJ.nl.jeroendeleeuw.appname
Michael Morrison's comment contains the info you (likely) want. At the bottom is what you're really looking for.
The link:
https://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/DevPortalGuide/CreatingandConfiguringAppIDs/CreatingandConfiguringAppIDs.html#//apple_ref/doc/uid/TP40011159-CH18-SW1
The helpful section:
Updating Your App to Include APNS, iCloud, In-App Purchase, or Game
Center Requires an Explicit App ID
As you develop, you might want to add features to your app. To support
APNS, iCloud, In-App Purchase, or Game Center, you need an app signed
with a provisioning profile that uses an explicit app ID. If you have
an app that uses a wildcard app ID, you need to create a new app ID
and then modify your provisioning profile.
To update your app ID: Identify your app’s current bundle ID in Xcode
or iTunes Connect.
Create a new app ID in the App IDs area of the iOS Provisioning Portal
with your app’s bundle ID search string.
Enable your app ID for APNS or iCloud (see “Configuring Your App ID
for Apple Push Notification Service” or “Configuring Your App ID for
iCloud”). Explicit app IDs are automatically enabled for In-App
Purchase and Game Center.
Modify your provisioning profile to use the new explicit app ID.
The process of changing the app id is documented here:
http://developer.apple.com/library/ios/#qa/qa1680/_index.html
Updated - Mar 24, 2015: The link is no longer online but you can still has here:
http://web.archive.org/web/20111006112505/http://developer.apple.com/library/ios/#/web/20111006170433/http://developer.apple.com/library/ios/qa/qa1680/_index.html
As provided in the comments below.
Contact apple. If you change the bundle ID, your app will be uploaded as a new program. You can't do Push Notification with a specific bundle ID.

Can I change the Bundle Identifier in my app after it's been approved?

I've got my app approved a while ago and used the * provisioning profile so I created somehting like:
com.mydomain.MyApp
but now I have the necessity of adding push notifications and I can't due I am using the * provisioning profile and it needs to have its own app ID and profile.
How should I proceed in order to achieve an app update without breaking anything
The bundle identifier for an app must always remain the same between updates, but the AppID can actually be different. So all you need to do is create a new AppID that used the same bundle identifier as the original app instead of a wild card.
Apps that use a wildcard still need a normal bundle identifier. The wildcard AppID lets you use any bundle identifier you like, but it still needs one.
There used to be an Apple article about this:
but it is no longer available online However, an archive is available.
You can't change the CFBundleIdentifier of a released app if you want to release updates for it, the App Store will automatically reject it when you upload. So...
I needed to enable iAds on an app previously developed with a wildcard App ID. Here's what I did:
I have a wildcard App ID of <AlphaNumeric>.* which my app currently uses, and my app has a CFBundleIdentifier of com.companyname.mygame.
Created a new App ID of <AlphaNumeric>.com.companyname.mygame.
Created new development and distribution provisioning profiles that include the new App ID.
Download the new provisioning profiles to Xcode and my devices.
I was then able to compile the App with the new non-wildcard distribution profile, which meant on upload I could enable iAds (or Push for you). The CFBundleIdentifier didn't change so the new compilation appears as an update to the existing app.
I can confirm this process worked without issue.
Under Frequently Asked Questions in the document entitled "Technical Note TN2259," which is "Adding In-App Purchase to your iOS and Mac Applications," there's this bit
Question: My iOS application is currently signed with a Provisioning Profile
that uses a wildcard App ID. How do I enable my App ID to support
In-App Purchase?
Answer: Read the Creating and Configuring App IDs section of
the iOS Team Administration Guide to learn how you can enable your App
ID to support In-App Purchase.
The link points here, and there's a section called, "Updating Your App to Include APNS, iCloud, In-App Purchase, or Game Center Requires an Explicit App ID"
That said, I don't know (yet) at what point the app takes on the new App ID. Is it when you upload for review, before that, or when it has been approved? I am working on this problem now, so I might be able to add to this answer soon.
Edit: The explicit app id only affects the piece of software you are testing and has, essentially, nothing to do with iTunes Connect whatsoever. This means that if you are testing in-app purchases, the piece of software that's running (your app) has to have a provision profile based on a cert that is app specific. What happens in iTunes Connect is totally irrelevant.

Changing an iPhone app id?

I would like to change the app id of an iPhone app that I am selling.
Is it possible to do so, update it, maybe add in-app purchases and have no problems?
EDIT
I did not change the bundle identifier. What I did was to create a new App Id in the iPhone Developer Program Portal. I first used a wildcard one and then to add the in-app purchase I created a specific one just for this app. I used the same id as I used first time I posted to the AppStore.
So, I did not change the App Id of the app. But this was how I solved this problem.
--
I did just that with one of my apps, "Nya Öl"
I added a in-app purchase for a Favorites List in version 1.1

Converting wildcard bundle identifier to single ID

I have an app in the app store that uses a wildcard bundle identifier. I want to implement in-app purchashing , which requires a non wildcard ID. How do I convert the wildcard ID of an existing app to a static ID for in-app purchase and push notification?
The bundle identifier for an app must always remain the same between updates, but the AppID can actually be different. So all you need to do is create a new AppID that used the same bundle identifier as the original app instead of a wild card.
Apps that use a wildcard still need a normal bundle identifier. The wildcard AppID lets you use any bundle identifier you like, but it still needs one.
http://developer.apple.com/library/ios/#qa/qa1713/_index.html
https://developer.apple.com/library/ios/#technotes/tn2259/_index.html
You don't actually need to change the app's id, you just need to make a new provisioning file for the specific id you've already shipped, and then sign the upgraded version of your app with the new code-signing certificate.
That is, if the old app's bundle id was com.yourcompany.myapp, and signed with a com.yourcompany.* certificate, you just make a new com.yourcompany.myapp certificate, but you leave the app's bundle identifier the same as before.
In short you can convert an already submitted app that uses a wildcard bundle ID to a unique App ID. However, you're going to have some issue(s), or fallout from a user standpoint if you do so.
Apple uses bundle ID's to identify apps on the app store (hence the term App ID :-)).
The problem that you're facing is that your app is already up on the App Store with possible user downloads. Now when you update your application with the new unique App ID, the users that have already downloaded your application (with the old App ID) will not get the update (with the new unique App ID).
The reason why this happens is that you now have a new bundle ID in your application. With no connection to the old App ID. Since apps can only have one reference to an App ID. It's usually a good idea to keep an App ID the same throughout the production release, and updates of your application.
If you create a unique ID for your App (which you can). Users that download the new updated app everything will be all fine and dandy, but for the users that downloaded your app before the update. Well... you have now officially created an app orphan for those users, these users will never get that update since it doesn't match the App ID.
As far as there being a way around this. I'm not sure if there is. I can only suggest that you ALWAYS create unique App ID's for your future production release applications.
In order to create an application that allows you to use Apple's Push Notification service, and Apple's In App Purchase. You will need to create an App ID that is a unique App ID. I would always recommend that you use unique ID's for your applications. It will save you a ton of headaches later on down the road.
For clarification purposes the following are unique ID's
com.companyname.appname (preferred naming convention for unique App ID's)
appname.companyname