23

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

Dabor Troppe
  • 273
  • 1
  • 3
  • 6

3 Answers3

23

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.

Benjohn
  • 13,228
  • 9
  • 65
  • 127
bovine
  • 5,303
  • 2
  • 18
  • 17
  • The link was to Technical Q&A QA1680, 'Updating from a wildcard App ID to an explicit App ID', however either there is something wrong with the Apple site or they have intentionally taken that article down now. – bovine Oct 11 '12 at 06:40
  • This answer should be approved – Martin Jun 07 '13 at 10:44
  • 3
    http://web.archive.org/web/20111006112505/http://developer.apple.com/library/ios/#qa/qa1680/_index.html – est Oct 09 '13 at 07:46
11

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.

hjd
  • 870
  • 1
  • 9
  • 22
  • so, in other words, you can't change the bundle identifier of the app, but you can release updates under a new AppID and provisioning profile using that new AppID? – Ben Collins Sep 19 '10 at 16:17
  • As long as the new AppID contains the same alpha numeric namespace as the original wildcard ID. So if a company ("BenCollins") created an app ("TheApp") in wildcard App ID 1234abcd.*, you'd need to create a new App ID of 1234abcd.com.BenCollins.TheApp and use that. – hjd Sep 20 '10 at 08:03
  • So you basically create new provisioning profiles and use those, and you don't alter the bundle id. Nothing else changes. So... at what point did the app switch over to respect the new App ID? My issue is that I want to add in-app purchases to an app that has a non-unique App ID. Thanks for any insight! – Dan Rosenstark Oct 04 '12 at 06:39
1

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.

Dan Rosenstark
  • 68,471
  • 58
  • 283
  • 421