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

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.

Related

Adding Tester to TestFlight

If I add a tester to TestFlightApp.com They get a link to register their device. This then downloads a profile, which is called TestFlight Access. Not for my app.
What is this profile for and how does it relate to my app?
Also do I still need to add the tester's UDID to the apple developer portal, myself?
That profile allows the service to gather the UDID of the testers device. This way the user never has to manually search that UDID and it is possible for the service to provide developers who invite users that information automatically.
Additionally, the installed web clip will authenticate the device against the service, so the apps that can be installed will be offered. These apps are found by comparing the UDID of the device against the provisioning profiles of all apps available.
So yes, you still need to add the UDID to the provisioning profile and compile your app against it.
The profile process is provided by Apple and well documented here: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009505
There are also other services who leverage that functionality for "easier" gathering of UDIDs and providing an easy way to let users download their beta apps.
I'm jumping in here to say, yes you do need to re-build your app with a new profile that includes the new tester's device UDID. I'm having a problem with this for one tester only, that no matter what I do TestFlight refuses to acknowledge that the profile I am using has this one person's UDID in it yet it does. I'm writing to their support group about it and will let the forum know what I find out if anything useful.
The profile allows the test flight app to install your app. And yes, you will still need to add their UDID to the provisioning profile.

Upload IPhone app to device instead of other app

So I'm not that familiar with the process of Provisioning profiles and certificates.
Currently I have one app I'm developing that I can upload to my device.
Now, for testing reasons, I want to write a very simple app and to upload it to my device as well. The thing is, is that I don't want to configure another app in iTunes connect and provisioning profiles, so I thought maybe it's possible just to change the bundle identifier of the second app to be the same as the first.
However, in XCode I get the following error :
"Code Sign error: The identity 'iPhone Developer' doesn't match any identity in any profile"
Any way to make this happen?
If you set the bundle identifier of the 2nd app to be the same as the 1st, the 2nd app will replace the 1st one on your phone.
If you want the ability to have both apps installed at the same time, you need a new app id.
But you don't want to create a new app id for each test project.
The idea is to recreate the Team provisioning profile available for the Company developer program (I guess you subscribed to the individual developer program).
Create a new app id with bundle identifier set to *
Create the provisioning profile associated to this app id
Download and install this generic provisioning profile
With this wildcard profile, you will be able to install any test application.
Please request a certificate to apple through your paid developer account, generate a provisioning profile and install this in mac as well as in your device. then choose your provisioning profile and build and run your app through this provision.then it will install in device. There are details in developer.apple.com regarding to this. If you feels confusion please mail me sandeep.kniit#gmail.com. i will reply you asap.

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.

iPhone:Problem when submitting the app which has same bundle identifier

I have created a provisional profile using 'Non Wild Card App ID'. Which does have like "com.compnayname.appname". As i want to use this for my free application as well as the same application with new set of features as paid application, i followed to not to use Wild Card App ID. Now i have submitted my free application, it is being shown well. I am trying to submit the same app which has more features, as paid application, iTunes connect throws error as "The binary you uploaded was invalid. The bundle identifier is already in use by a different software package.". I used the same bundle identifier for paid app build too when creating Distribution build, because provisional profile is created same for both the apps. I also tried to create a build using "com.compnayname.appname.moreinfo", but app building is not successful as Prov Profile is being created with "com.compnayname.appname".
What can i do now? How would i use the same provisional profile and bundle identifier for my same free app and paid app? Then what is the use of creating 'Non Wild Card App ID' ??
Note: I know creating of Wild Card ID and use it. But i wanted to use Non-Wild Card ID for both the apps(but same app), free app and paid app.
Could someone please help me on resolving this?
Thank you. Appreciate your quick help.
if it's the same app, use the same ID, but make it an "upgrade" from your previous app, that is, use the "upgrade this application" button in iTunes Connect. This will mean people who downloaded it before for free will get the new version for free, but you can charge new users if you want.
If you don't want previous owners to get the new version for free, then it's really a new app, and needs a new bundle ID.
Another option is to make it an upgrade, leave it free, and use in-app-purchase to unlock the new features.
The documentation states that if you are building a suite of apps that should share the same settings etc. then you should be using a wildcard app ID.
I don't believe it's possible to use a unique appID for two apps. Then it wouldn't be unique.

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

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.