Importance of "Bundle identifier" - iphone

What is the importance of "Bundle identifier" in info.plist?

The bundle identifier is supposed to uniquely identify your app. You don't change it after a release, never, and you can then change the other stuff (display name for example).
It's all essential regarding mobile provisioning profiles and in-app purchase: you link an in-app purchase with your bundle identifier. And you can create a mobile provisioning just for your bundle identifier (not for com.yourcompany.* or fr.ecomposite.*).

The bundle identifier should be the same as the app id that you resigstered on the development portal. When you go to deploy the app in the app store it will check the bundle identifier to make sure you are uploading a regiastered app.

Related

In-app purchase product id clarification

I have used "product id" like this "ADR123" in my application. I am getting "invalid product identifier" in-app purchase not working, whether this product id is valid or not?
u need to ensure that the bundle identifier is the one which is for the same app you have on itunesconnect which is having this product id added in in-app-purchase
Follow the checklists of http://troybrant.net/blog/2010/01/invalid-product-ids/
Also refer to this blog.
Checklists:-
Have you enabled In-App Purchases for your App ID?
Have you checked Cleared for Sale for your product?
Have you submitted (and optionally rejected) your application binary?
Does your project’s .plist Bundle ID match your App ID?
Have you generated and installed a new provisioning profile for the new App ID?
Have you configured your project to code sign using this new provisioning profile?
Are you building for iPhone OS 3.0 or above?
Are you using the full product ID when when making an SKProductRequest?
Have you waited several hours since adding your product to iTunes Connect?
Are your bank details active on iTunes Connect? (via Mark)
Have you tried deleting the app from your device and reinstalling? (via Hector, S3B, Alex O, Joe, and Alberto)
Is your device jailbroken? If so, you need to revert the jailbreak for IAP to work. (via oh my god, Roman, and xfze)

How are Bundle IDs supposed to work for multiple Apple apps?

Here is the situation we would like to have: release two different apps by the same company. Ideally, they could share login info across them but this is NOT mandatory.
Our current plan is this:
One provisioning profile with the Bundle ID "com.wikia.*"
App one (which is already out) would have a Bundle ID suffix of "app.GameGuides" so it's "Your Bundle ID" value is "com.wikia.app.GameGuides".
App two (which we are trying to release) would have a Bundle ID suffix of "lyricwiki" so it's "Your Bundle ID" value is "com.wikia.lyricwiki".
Is that how it's supposed to work or should each app have their own provisioning profile with the wildcard only for variations of the SAME app?
Any help is greatly appreciated!
[Note: App one (GameGuides) is already out, using a profile with the prefix "com.wikia." in the App Store & is also on the Android Market... and app two (LyricWiki) is on the Android Market & we're trying to submit it to the App Store but we are getting an error that our "Bundle ID" has already been used... not sure if this is an error on the "Your Bundle ID" or if the wild-carded Bundle ID can't be reused (which seems strange since it is wildcarded).]*
Docs on wildcard app IDs:
https://developer.apple.com/library/ios/#qa/qa1713/_index.html
Our company does what youre describing, com.wikia.app1, com.wikia.app2, etc. I would double check that you didnt try to submit it twice and make sure there isn't actually another app with that bundle ID, otherwise contact Apple to see why it's being rejected.

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.

App ID for iOS Distribution

I want to submit my app to the App Store.
While Creating iOS Distribution Provisioning Profile for App Store Distribution, what App ID should I select? Is it the same as for Development Profile ? Could you please guide me. Thank you.
I already referred http://developer.apple.com/ios/manage/distribution/index.action
I create a new App ID each time I am ready to submit a new (no updated) app to the store.
From the portal, go to the "App IDs" tab.
Click on the "New App ID" button.
Under "Description": The common name should be something for you; I often use the App Name followed by "iPhone" or "iPad" or "Universal" as applicable.
Under "Bundle Seed ID (App ID Prefix)": Choose Generate New.
Under "Bundle Identifier (App ID Suffix)": As instructed, use something like com.domainname.appname. Remember this and add it to the Info.plist file under "Bundle identifier" in your app or you will not be able to upload it.
Yes, use the same app ID you used for development. The app ID is the application identifier -- it doesn't change according to the way you build the app.

Why must the bundle identifier be changed prior to submitting an iPhone app to the App Store?

I need to understand this piece better because when I reached that step in the app submission process, my comprehension went to hell.
While developing my app, my bundle identifier was com.yourcompany.${PRODUCT_NAME:rfc1034identifier}.
The instructions say
In the Properties Pane of the Target Info window, enter the Bundle Identifier portion of your App ID. If you have used an explicit App ID you must enter the Bundle Identifier portion of the App ID in the Identifier field. For example enter com.domainname.applicationname if your App ID is A1B2C3D4E5.com.domainname.applicationname. If you have used a wildcard asterisk character in your App ID, replace the asterisk with whatever string you choose.
Here are example App IDs and what
should be input into the Identifier
field in Xcode.
Example App ID:
A1B2C3D4E5.com.domainname.applicationname
Identifier to enter in Xcode:
com.domainname.applicationname
Example App ID:
A1B2C3D4E5.com.domainname.* Identifier
to enter in Xcode:
com.domainname.
Example App ID: A1B2C3D4E5.*
Identifier to enter in Xcode:
full_reverse_dns_company_and_application_or_suite_name
In the provisioning protocol, my App id is XXXXXX1111.*. So In the identifier I entered com.mysite.myAppName, which was absolutely arbitrary, but that seemed to be the point. I built the app submitted it, everything seemed to work alright. But then I tried to create the Ad Hoc distribution and upload it to my device and what happens is that the app loads, and then crashes after about 3 seconds. At first I couldnt figure out what was going wrong so I retraced all my steps until finally I got to changing the identifier in the target. I changed it back to com.yourcompany.${PRODUCT_NAME:rfc1034identifier} and my app then started to work perfectly on my device with the Ad Hoc distribution provision.
My question then, is what do I need to write as the value for the identifier in order to make sure that my app doesnt crash when the app store team is reviewing my app?
Thanks!
EDIT
The Ad Hoc Distribution, App Store distribution, and the Development profile i was using all have the SAME app id, which is a wildcard XXXXXXXXXX.. In the organizer, the only provisioning profiles i have for my ipod touch are my team provisioning profile and my development profile. Under the developer profiles category in the organizer, I have team, distribution, ad hoc, and development, all with '' app identifier. in the 'provisioning profiles' i have the same 4, with my ipod touch as an included device on the ad hoc profile.
In my info.plist my id is com.mysite.myappname. Everytime i try running the app on my ipod touch using my distribution ad hoc profile, i get the dialog box:
'cant run "myappname" on ipod "my ipod name"
The ipod 'my ipod name' doesnt have the provisioning profile with which the application was signed. click install and run to install the provisioning profile 'dev name Ad Hoc' on 'ipod name' and continue running 'app name.app'
when i click install and run, the app loads, and then crashes after 3 seconds, as i said before. it seems as though the provisioning profile is failing to install on the ipod touch.
The important thing is that the bundle identifier in your info.plist file, the bundle identifier in your provisioning profile, and the bundle identifier associated with your app ID should all match up.
If you were able to do a distribution build, it means that the bundle identifier in your provisioning profile is the same as the one in your info.plist file. And if Itunes connect accepted your submission, it means that the bundle identifier associated with your app id is also the same. So you are in good shape there.
Reading your description, it is possible that your add hoc distribution profile does not have the same bundle identifier as your app store distribution profile. If so, this would explain why you had to change the bundle identifier in your info.plist when switching from an app store submission to ad hoc distribution.