iTunes Store operation failed. You must supply a CFBundleIdentifier for this request - bundle

i just signed up for this place, i have made app everything is working fine with app all the certificates and files are updated but when i try to upload to app store from xcode i keep getting this error. if anybody could help me to fix it it will be great thank you
iTunes Store operation failed.You must supply a CFBundleIdentifier for this request.

Your info.plist application is wrong.
open your info.plist,"Bundle OS Type code" is null.I met the same problem,and add "APPL" to "Bundle OS Type code",that's OK.

Your info.plist configuration is wrong.
open your info.plist,"Bundle OS Type code" is null.I met the same problem,and add "APPL" to "Bundle OS Type code",that's OK. See image here

Login in Apple Developer, go to Certificates*Profiles, delete all development and distribute signing certificates and provisioning profiles. Then in Xcode8 you select "Automatically manage signing", recreate signing certificates and provisioning profiles,archive and upload to appstore again.

Related

ERROR ITMS-90283: “Invalid Provisioning Profile”

I have inherited an old macos app and I am trying to upload a new version to the app store. When trying to upload the new build, i keep getting this error:
ERROR ITMS-90283: "Invalid Provisioning Profile. The provisioning profile included in the bundle com.****.**** [com.****.****.pkg/Payload/****.app] is invalid. [Invalid 'com.apple.application-identifier' entitlement value.] For more information, visit the macOS Developer Portal."
I have trying creating new certificates, but i'm not sure what i am doing wrong. How do i upload a new build to a protect i have just been given access to?
I experienced this issue when I enabled in-app purchasing on my application and was manually signing my application through codesign command line.
Switching back to using Xcode Organizer to submit my application seems to have resolved the issue.
(https://developer.apple.com/library/ios/qa/qa1878/_index.html) :
Q: What causes the provisioning profile "Invalid" status? How do I resolve it, and how do I prevent it?
A: The provisioning profile invalid status is caused by changes to the profile’s associated certificate or App ID. Any time an App ID or certificate changes, all profiles that are associated to it are marked Invalid. This does not apply to Xcode's team profiles, but applies to all profiles that Xcode does not manage, specifically, custom development profiles and distribution profiles. This document explains the causes in detail and provides steps to resolve and avoid the profile invalid status.

“Invalid Provisioning Profile… [Missing code-signing certificate.]” for brand new, Vanilla Mac App in OS X Mavericks

In OS X Maverick's XCode, I created a brand new Mac > "Cocoa Application", with Core Data and Spotlight Importerl; about as vanilla a Cocoa application I could muster.
Under Preferences > Accounts, I signed in to my Mac Developer Account.
In Targets > Identity, I set Signing to "Mac App Store", and was able to select my Mac Developer Account for "Team".
I then went to Product > Clean, and then Product > Build for... > Running, and then Produt > Archive.
In the Organizer, I select the resulting .app and click "Validate", and hit the Mac App Store radio, and hit "Next", and it's able to log into my Mac Developer Account.
I select my Provisioning Profile in the dropdown, and click "Validate".
It comes back with several errors:
1 - "Invalid Provisioning Profile. The provisioning profile included in the bundle {BUNDLENAME} [{BUNDLENAME}.app] is invalid. [Missing code-signing certificate.] For more information, visit the Mac OS Developer Portal."
2 - "The bundle identifier cannot be changed from the current value, '{DIFFERENT-BUNDLE-FROM-OTHER-PROJECT}'. If you want to change your bundle identifier, you will need to create a new application in iTunes Connect.
3 - Invalid Code Signing Entitlements. The entitlements in your app bundle signature do not match the ones that are contained in the provision profile. The bundle contains a key that is not included in the provisioning profile: 'com.apple.applications-identifier' in '{BUNDLENAME}.app/Contents/MacOS/{BUNDLENAME}'
I was able to do the same process before, for a vanilla app, before Mavericks. I'm not sure if this is a Mavericks error, or a fact that now I have multiple app projects. Particularly odd is that DIFFERENT-BUNDLE-FROM-OTHER-PROJECT in error (2) is not the same bundle name as the current project's bundle.
Would love any help you can provide! Thank you!
Seems like this was a secret key missing or corruption issue. I ended up revoking the existing certificates and profiles I had in XCode > Preferences > Accounts, and issuing new ones.
You may need to set a provisional profile in the Build Settings section.
See here: Xcode 5: Code signing entitlement errors
and here: Weird code-signing error
Go to Apple Developer Portal, recreate the provisioning profile (distribution profile in your case) and download it again. Make sure that the Distribution certificate is installed in your Keychain Access in order to sign apps submitted for the App Store. and Recheck ur Bundule Id as well
You should try setting up a WildCard Provisioning Profile and go from there.

IOS Provisioning Profile and Push Notification on New Device

I can send push notification to an IOS device (IOS 5.1 IPAD 3rd gen) and handle notifications etc.. So it works quite well.
Now I have to use another device(IOS 5.1 IPAD 3rd gen), on organizer by right clicking I add my device to provisioning profile I can install my app to device but I can not send push notifications because I can not get device's token.
I guess it is because when I right click and add device to my provisioning profile It only adds the iOS Team Provisioning Profile rather then myApp Development Profile
On apples developer portal I have:
On My Organizer In Library-->Provisioning Profiles
On my teams
And I handle error code on push Notification:
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(#"Failed to get token, error: %#", error);
}
Error Is: Failed to get token, error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0xxxxxxx {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
In case error is because provisioning profile:
How can add that Paper Developement profile to my device?
or
How can I learn device token and send push notification without creating provisioning profile all over?
Thanks in advance
I had similar issues before so I will list your possible issues,
Firstly do not use a provisioning profile with a wild card it is highly possible that your IOS Team Provisoning Profile includes a wild card. So just go to your device's provisioning profile on organizer and delete that IOS Team Provisoning Profile
Secondly go to your provisoning profiles on developer.apple and click edit as on your second picture in question. When you click edit you will see Modify click on that
and add your device by checking squares like below:
Click save and download new profile, now go to your provisioning profiles on your organizer and delete previous Pape Developement Profile. Double click your downloaded profile or click refresh on your organizer. Now drag and drop proviosinig profile to your device on organizer.
Finally if none of above solves your problem that means probably your bundle identifier and your app id does not much in this case check this answer
Hope you solve this issue....
For me it was just changing the bundle identifier and code signing identity to IOS Developer. The bundle identifier Changing it back and forth and building between changes did the trick (not sure if this step necessary). Not sure what it really was. Hope this helps someone someday, probably not.

iOS - Prevent iPhone Configuration Profile from being deleted OR check to see if it's installed

I'm working on an iOS enterprise app that relies on an Configuration Profile being put on the phone. Unfortunately, the user can "cancel" this profile, which really screws with our app.
So I was wondering if a) is it possible to prevent a configuration profile from being deleted OR
b) is there a way to check to see if a configuration profile is installed already (say, at runtime, then we can just install it again if it's not there)?
If you want the configuration profile not to be tampered with / disabled by the user, this is possible! If you're using Apple Configurator to build your .mobileconfig file in the generals tab select security as never. Be aware: once the profile is installed on the device it cannot be reverted unless you restore the device
The long story short is there is no current documented way to even programmatically call / install a configuration profile (.mobileconfig) file onto the device: so if you're thinking about checking whether the profile exists and if not to install it, it's impossible (as for available documentation thus far) - if you do find a way let me know
Note:
.mobileconfig files can only run through Safari / Mail.
This similar SO discussion may help: Installing a configuration profile on iPhone - programmatically
It is possible to check is .mobileconfig is installed.
What you need to do is:
Create CA (certificate authority) and export it as .cer.
Issue certificate using created CA and export is as well as .cer.
Using Apple Configurator app add CA .cer in the certificates area.
Mobile configuration profile will have CA .cer.
Issued certificate (on step two) add to app bundle.
Using Security framework evaluate (SecTrustEvaluate) issued
certificate on step 2.

App returns null value for device token from app store

I have released my app update with push notifications however when I check my server, I notice that the token that was sent to the database is "null". I did lots of testing using a development certificate AND a production certificates for ad hoc. Both worked succesfully but the version on the app store does not and I have no idea why. I posted about this issue about 2 weeks ago and someone told me I should not use the provisioning profile I used for ad hoc so I created a new provisioning profile with the same id. Update got releases yesterday and I still have the same problem. I need to find a permanent solution since my users are getting annoyed with all these updates but I don't know how to test until it gets approved on the app store.
If anyone can please offer thoughts or assistance I would really appreciate it. Thanks in advance.
P.S. if it helps, I deleted my app from my device and installed it again from the app store... It did not ask me if I wanted to receive push notifications but push is enabled for the app from the phone settings...
There are 3 steps in an APNs communication:
Your app registers to receive APNs in your appDelegate within your iOS. This will give you a deviceToken that you should use to send notifications.
Your app sends the deviceToken to your management server
Your management server connects with Apple APNs server to send the Push Notification
In your case, I understand that your problem is in step 1 because you said that you are having a null device id and the app is not asking you about the APNs permission. Therefore, changing your server certificate or switching from gateway.sandbox.push.apple.com to gateway.push.apple.com is not going to help because the error happens before.
This is clearly a problem with your certificates. You should check that you have done all the required steps in your Apple iOS Provisioning Portal:
Create an AppId with the bundle identifier of your app. Avoid wildcars such as *.
Configure your InAppPurchase options for your app (this is not the problem because is used for step 3 in the communication)
Create a provisioning profile for Distribution which uses the AppId used in 1. (I suspect that this could be your problem), and download it
Open XCode project settings and check that your archiving operation uses the correct profile donwloaded in 3. Be sure that you pick the correct one when Organizer asks for one. (if the previous step was OK, then this is definetely your problem, so double or triple check it).
If your want to be sure that your binary was generated with the correct profile before submitting it again to AppStore, do the following:
Open the binary with Finder (first, open the archive at Library/Developer/XCode/Archives/..., right click on it and "Show package contents", navigate to /Products/Applications/youApp, show package contents again),
Look for the file embedded.mobileprovision and open it with a text editor
Among the binary content, you should be able to localize a couple of fields called "application-identifier" and "aps-environment". Check they have the correct values.
I bet that if you check your previously archived apps you will see an incorrect profile. This is the only cause for your app not to return a deviceToken. (unless it receives it but it is not correctly sent to your server, a problem in step 2 of the communication above).
Do you use gateway.push.apple.com and not gateway.sandbox.push.apple.com?
If you have created a new provisioning profile for your application, I think you need to generate new certificates on your server as well.
If you can check your app logs in 'console app'(organizer>device>console ) by connecting device installed with your app containing device token null issue.
Based on this
no valid 'aps-environment' entitlement string found for application
The problem is due to current Provisioning Profile does not contain
APNS information, as the Provisioning Profile is created BEFORE
creating the APNS certificate.
Solution: create a new Provisioning Profile & select the Provisioning Profile in Xcode will clear the error.
You can execute terminal command to check 'production provisional
profile' supports apns environment or not and it should look similar to the following:
security cms -D -i Path_Of_Your_AppStoreDistribution.mobileprovision
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>H22LLUHM4D.com.company.appName</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
</dict>

Resources