Provisioning profile does not match bundle identifier - ios

i have run in iphone is ok, but i try to build it and upload, it get this error, how can i fix it, thanks!
Code Sign error: Provisioning profile does not match bundle
identifier: The provisioning profile specified in your build settings
(“PicKey Distribution”) has an AppID of “com.KKApps.PicKey” which does
not match your bundle identifier “com.KKApps.PicKey.MyKeyBoard”.
CodeSign error: code signing is required for product type 'App Extension' in SDK 'iOS 8.0'

At the creation of your Provisioning profile on the Developer Portal you have provided the app id com.KKApps.PicKey
Your Bundle identifier has to be strictly identical to the one you provided for the Provisioning profile, with no additions after like the .MyKeyBoard
Two solutions for you
1. In your case, with an explicit app ID : You change your app bundle identifier to com.KKApps.PicKey to match the Provisioning profile App ID
2. Use an You create a new App ID com.KKApps.PicKey.* and change the Provisioning profile to link to it (or create a new one). The * is a wildcard allowing to match multiple apps
With solution 2 you will be able to create apps with Bundle Identifier starting with com.KKApps.PicKey.
For exemple com.KKApps.PicKey.MyKeyBoard, or com.KKApps.PicKey.MySuperApplication
Apple's explanations for APP IDs
Explicit App ID (Example: com.domainname.appname)
If you plan to incorporate app services such as Game Center, In-App
Purchase, Data Protection, and iCloud, or want a provisioning profile
unique to a single app, you must register an explicit App ID for your
app.
To create an explicit App ID, enter a unique string in the Bundle ID
field. This string should match the Bundle ID of your app.
Wildcard App ID (Example: com.domainname.*)
This allows you to use a single App ID to match multiple apps. To
create a wildcard App ID, enter an asterisk (*) as the last digit in
the Bundle ID field.

Change your Watchkit App's Bundle Identifier to your app's bundle identifier, also change your watchkit extension's Bundle Identifier to your App's Identifier.
Also check for the Versions of your main app and watchkit, watchkit extension's versions, both versions should be same.
for more please look into apple docs
https://developer.apple.com/library/ios/technotes/tn2410/_index.html
Hope this will help!!!

Related

Signing .extension of app not in provisioning profile

I would like to export a new build of my Xcode app to iTunes Connect, but I always get the following error:
Failed to create provisioning profile.
The app ID "[myappid].OneSignalNotificationServiceExtension" cannot be registered to
your development team. Change your bundle identifier to a unique string
to try again.
Provisioning profile failed qualification
Profile doesn't include the selected signing certificate.
I tried the following:
Cleaning the build
Restart xCode
Creating new profiles (distribution/development)
Removing .OneSignalNotificationServiceExtension (gives another error)
I don't want to change the app id since I want to continue on the same app (for my testers).
I had to change my password of my Apple ID due to security issues, but I changed it everywhere they asked for it.
Does anybody know how to fix this?
As oneSignalNotification is an Extension, the App Id of the extension should have main App id as prefix. ie, If your main App id is : com.xx.xxapp, then the app id for your extension should be com.xx.xxapp.someExtention. Also you need to have separate provisioning profile for main App and extension target.

iOS8 extension needs own provisioning profile?

I am starting an iOS 8 extension but I can't run it on my device. The error when trying to run it is:
No matching provisioning profiles found
The provisioning profile specified in your build settings
(“ExtensionName”) has an AppID of net.company.AppName which does not
match your bundle identifier net.company.AppName.ExtensionName.
Xcode can resolve this issue by downloading a new provisioning profile
from the Member Center.
Do I need a separate provisioning profile for both the main app and the extension ?
Should they share a bundle identifier (by default it adds the extension name to the bundle identifier, so perhaps not) ?
If it has a separate bundle identifier how is that reflected in the provisioning profile (if there is a separate one) ?
It would seem that Xcode would prefer it that way, however there's nothing stopping you from using a wildcard profile until you want to do an Adhoc or Release to the App Store. More to the point of your question though, for every target that you have, you need a profile and bundle ID. So yes, you "need" another provisioning profile for your Extension, although I expect Apple to streamline this process.
All in all, it's probably best to just use a WildCard dev profile until you need a provisioning profile. Remember this is all a beta, and they're still working on pretty much everything.
Extensions are separate targets from the host app. You have to treat them as though they are separate apps with different bundle identifiers and different provisioning profiles.
It's best if you just create them during testing instead of using wildcards because you may need to test some capabilities that you enabled, for example App Group so that your extension and host app can access the same container.
Note that if you want to have any capabilities enabled for your host app and extensions, you have to enable them individually for all of them.
I've located this documentation pertaining to App Extensions. If you read the bottom of page 20 if seems that using the same distribution certificate is actually suggested. I've gone ahead and changed my bundle identifier for the Today Extension to extend my applications. For example, com.DeveloperName.AppName.TodayExtension, created an App ID in the Dev Center to correspond with that, and created a distribution profile for it.
My app +Quotes has successfully been updated by following these steps. I have not experienced any issues with the app or extension, but Xcode does seem to get a little confused when trying to auto assign the correct provisioning profiles for my extension now. Selecting them manually solves this.
You do need a separate provisioning profile for you extension but with the same certificate your main app has. When you are creating a new provisioning profile, your Extension's app id will also appear in the list, choose that, and proceed to create a new provisioning profile.
Also choose that provisioning profile in the target of your extension.
I simply use "Automatically manage sign in" until I need to push to App store. This works out of the box with simulators, haven't tried with devices yet.
Few pointers for Appstore Build:
I created one wildcard id for every notification extension, but the prefix of this wildcard bundle id should match your app's bundle id as prefixed. If it's not like this, this error will come up: "Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier". So, if your app's bundle-id is: "com.companyName.appName", the wildcard bundle-id for your extension should be "com.companyName.appName.*". You can then replace * with a specific notification extension in the XCode. Note apple only allows one period(".") after the app's bundle id for naming your extension's bundle id.
The version and build number of your extension should match that of your app.
Once App Id is created, create a distribution provisioning profile with this and use it in XCode.

Case sensitivity in bundle Identifier and the product name

I'm creating a new project in xCode with the following name "SampleApp"
Bundle identifier becomes like this "com.samplecompany.SampleApp" (Last word has camel casing)
But the App Id in the developer portal is "com.sampleCompany.sampleapp" (All lower case letters).
So, whenever I archive and try to sign a build with the provisioning profile, xCode says that the provisioning profile with the mentioned bundle identifier(com.samplecompany.SampleApp) is not found.(Since the app id is in all lower case format in the developer portal).
I tried to create the app id, "com.samplecompany.SampleApp", but the developer portal throws an error "com.samplecompany.SampleApp" is already taken.
If I go with all lowercase, My app name also becomes lower case.
My app is already in the appstore with all lower cases. So, I'm worried, if I remove the profile and re-create it, it will cause problems in the appstore build.
I'm struck here. How to solve this issue ?
Apple AppDistributionGuide says,
If the App ID is an explicit App ID, it exactly matches the bundle
ID. However, unlike domain names, bundle IDs are case sensitive. If
the App ID is lowercase, your bundle ID needs to be lowercase, too
Note: bundle ID is not what the user will see as the app name. That's the "Bundle Display Name".
The bundle ID is case sensitive. we need to use the app Id and bundle identifier are same. check the Apple Documentation
The bundle ID is not what the user will see as the app name. That's the "Bundle Display Name".You can change the Bundle Display Name to change the icon name displayed in home screen.

Submitting app with iCloud enabled: is it possible? Apple: Invalid Code Signing Entitlements

Two apps, say, AppX and AppXLite, use the same iCloud key-value storage with the same Store Identifier and in entitlements file I see $(TeamIdentifierPrefix)com.company.AppX
Everything works in adhoc and debug builds. But when I try to upload AppXLite to appstore, I get an error:
Invalid Code Signing Entitlements - The signature for your app bundle
contains entitlement values that are not supported. For the
com.apple.developer.ubiquity-container-identifiers entitlement, the
first value in the array must consist of the prefix provided by Apple
in the provisioning profile followed by a bundle identifier suffix.
The bundle identifier must match the bundle identifier for one of your
apps or another app that you are permitted to use as the iCloud
container identifier. Specifically, value "YYXXXXXXYY.com.company.AppX"
for key "com.apple.developer.ubiquity-container-identifiers" in
AppXLite is not supported.
Agree with this letter, but then everything is ok: prefix, provided by Apple, bundle identifier. If not, this won't work in adhoc build. But why do they say that things aren't right?
Yes, I know that there are tons of answers here, I read them. People say that one should disable iCloud support in app in provisioning portal to fix such issue. If I do this my apps will no longer see iCloud, but this is one of key features!
I have an idea that I should upload AppX first, before AppXLite, as both apps use AppX's bundle id as Store Identifier. But I've added both apps on provisioning portal, so appstore should know "the bundle identifier for one of my apps" as Apple stated in the letter.
Do anyone have experience of uploading iCloud-enabled apps to Appstore?
If you faced the same:
Kill all profiles in provisioning portal
Kill all profiles in Xcode and devices
Recreate all needed profiles (I've created dev, adhoc and appstore for each)
Download them manually and drag to Xcode.
Clean and rebuild all apps
Submit first app, which bundle id is shared between them as a Store Identifier of iCloud.
Submit all the rest apps.
Result: everything in "Waiting for review" state.

Profile doesn't match bundle identifier

So I'm trying to submit an app to the app store. This is my first app so I think I jumbled it somewhere.
In iTunesConnect, my BundleID is com.mywebsite.appname
I created a distrubition profile through the Provisioning Portal with the same app ID that I used to create the BundleID in itunesConnect. When I try to code sign my release build, I see this:
AppName (for bundle identifiers 'com.mywebsite.AppName')
profile doesn't match bundle identifier 'mywebsite.AppName'
From googling, it looks like that the bundle ID is case sensitive. I tried creating another app ID in the dev portal as appname, but it didn't seem to matter since now in the dev portal, I have two apps called Appname. Even though it let me add another app ID, it displays them the same with the first letter as caps, and the rest not. So what do I need to do in order to get my profile to match the bundle id. And which bundle id do I need to match, the one on iTunesConnect?
Lastly, I want to make sure that the name of my app underneath the icon on the iPhone doesn't show up in lowercase. Is that possible? Thanks!
This screenshot shows you where in Xcode to set the Bundle Identifier:

Resources