Signing .extension of app not in provisioning profile - ios

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.

Related

Signing iOS App: App ID Cannot be Registered to Your Development Team

I need to replace a deployed iOS native app with a new Ionic3 / Cordova hybrid app. The new hybrid app builds successfully (on macOS Sierra 10.12.6) but I can't sign the app (so that it can be uploaded to the app store).
As a first step, I'm focused on getting the new app on the app store (as alpha to test with TestFlight). I've removed all "development" certificates/profiles from developer.apple.com.
There's a lot of information/questions/answers on the web about signing apps. I've spent a couple of days on this issue and cannot get it to work no matter what I read or what I try.
The current iOS app code (deployed)
In Info.plist, $(PRODUCT_BUNDLE_IDENTIFIER)
In /bbh.xcodeproj/project.pbxproj, PRODUCT_BUNDLE_IDENTIFIER = "NSP.BBH-Mobile";
Re-create development provision
Open Keychain. Delete all developer/iPhone certificates. Delete all keys.
On developer.apple.com, delete development certificate and development provisioning profiles.
Confirm my iPhone device is registered with the correct UDID.
In Keychain, generate a certificate signing request file.
In developer.apple.com, create a development certificate, upload the certificate signing request generated in the previous step, download the certificate .cer file.
Double click on the .cer file. Keychain opens. Choose to add to "log in".
In Keychain > certificates, choose export, specify the strong password. Certificates.p12 file will be generated.
In developer.apple.com, create a development provisioning profile. Choose "iOS App Development". Choose an App ID ... but which one?
App IDs in developer.apple.com
BBH Mobile = com.bbh.*
BBH Mobile = NSP.BBH-Mobile
Xcode iOS Wildcard App ID = *
Notice on-screen reads:
"If you plan to use services such as Game Center, In-App Purchase, and Push Notifications, or want a Bundle ID unique to a single app, use an explicit App ID.
If you want to create one provisioning profile for multiple apps or don't need a specific Bundle ID, select a wildcard App ID. Wildcard App IDs use an asterisk (*) as the last digit in the Bundle ID field.
Please note that iOS App IDs and Mac App IDs cannot be used interchangeably."
We need push notifications so choose an explicit App ID = AYW4J8P7X3.NSP.BBH-Mobile
app id = team id (generated by apple) + bundle id (supplied by the user)
It makes sense to choose this App ID which includes the bundle id of the iOS currently deployed.
https://www.screencast.com/t/C0QdPdxwh09t
Choose a development certificate (just created), choose all devices.
Download the development profile and double click to install (in Xcode).
Double-clicking doesn't seem to do anything? How do I know it's installed in Xcode correctly?
Do I need the .mobileprovision file on my iPhone? The mac server is in the cloud so I don't have my iPhone connected via USB to the mac.
Open Xcode. Confirm my apple account added in Xcode > Preferences > Accounts. In the project, targets, signing, click "Automatically manage to sign".
Choose my personal team. The following errors are displayed:
Error 1: The app ID "NSP.BBH-Mobile" cannot be registered to your development team. Change your bundle identifier to a unique string to try again.
Why does it prompt to change bundle id? Isn't it standard to have one app id and to generate both a debug/development and release?
Error 2: No profiles for 'NSP.BBH-Mobile' were found Xcode couldn't find any iOS App Development provisioning profiles matching 'NSP.BBH-Mobile'.
But we just created a new development provision and selected App ID = NSP.BBH-Mobile. Why doesn't Xcode recognize this?
you may try unselect Automatically manage signing and import provisioning profile manually.
These are the steps I took to finally resolve this issue. It may not be optimal but it at least worked.
1. In Xcode, turn off automatically manage signing.
2. For signing (debug), select my development provision profile.
3. For signing (release), create a production provision profile, then select the new production profile.
Notes/Observations:
Even though I only wanted to create a signed debug for testing it seems I still had to provide valid signed release provision too.
Even after deleting all keys/certificates etc. and starting from scratch it seems Xcode has created a certificate too. Annoying - it's difficult to tell who created what now.
There was no need to change the bundle ID from the original iOS native app being replaced.
Creating a new production provision did not affect the existing production provision (which I could not use because I don't have the key).

Why does Xcode create non-wildcard app IDs called "XC Wildcard"?

I removed all my app IDs and provisioning profiles from Apple's Developer site. Then I created a new Xcode 7.3.1 project, and clicked "Fix Issue" next to the "no matching provisioning profiles found" message.
The app ID it created is called "XC Wildcard", but it's not a wildcard ID; it's set to the bundle identifier of the Xcode project. And the development profile it created is assigned to that app ID.
If I change the bundle identifier and click "Fix Issue", it creates a second app ID called "XC Wildcard", with the new bundle identifier, and another development profile for it.
This works, but seems wrong. Shouldn't it be creating an actual wildcard app ID, unless I turn on specific capabilities like Push Notifications?
Xcode create "XC Wildcard" to be used for debugging so it matches all app id's
change deployment configuration from debug to release and Xcode will create a provisioning profile with your app id.

Provisioning profile for Today Widget extension

I am trying to archieve my app for submission however I am running into issues with code signing.
Basically I have a Today Widget extension for my app. I am unsure about what I should be setting the provisioning profile as. I assumed that I would just use the same profile that I have used for my app, however I get this error:
The provisioning profile specified in your build settings (“AppName”) has an AppID of “BundleID” which does not match your bundle identifier “BundleID2”. Xcode can resolve this issue by downloading a new provisioning profile from the Member Center.
I can of course click 'Fix Issue', but does this actually solve the problem? It just changes my distribution settings to 'iOS Developer' and providing profile to 'Automatic'.
I was struggling with the same problem, and resolved it this way:
You need one App ID configured to the provisioning portal (I assume you have your com.apple.yourappname there)
You need to then configure the second App ID for the Today Widget (which should be com.apple.yourappname.something, where something is the name for your widget, like Today)
Then you need to create two App Store Distribution provisioning profiles:
One for the main App
Second one for the widget
Then assign the correct provisioning profiles for each target to the project settings and set to build for Distribution.
My problem was because of i added "arm" in the Excluded architecture section. I revert it and the problem goes away. It is weird.
Try to create a new App Id for your App extension in Certificates, Identifiers & Profiles (https://developer.apple.com/account). Then create a Provisioing profile for the newly created App id.
If the bundle id for your App is com.apple.appname you create an app extensions with the bundle id com.apple.appname.appextensionname. The same id is then used in Xcode for the widget.

No Matching provisioning profiles found ios7 xcode5

I am having a fairly annoying problem with my provisioning profile, The app I am working on started off with a name lets call it awesomeapp, so in the provisioning portal at apple I have a ios app identifier with the id "com.mydomain.awesomeapp".
but my apps bundle identifier is called AwesomeApp, and it turns out that the provisioning profile that is used the app identifier I have created is case sensitive. as I get this error
The provisioning profile specified in your build settings (“iOS Team
Provisioning Profile: com.mydomain.awsmomeapp”) has an AppID of
“com.mydomain.awsomeapp” which does not match your bundle identifier
“com.mydomain.AwsomeApp”. Xcode can resolve this issue by
downloading a new provisioning profile from the Member Center.
If I click okay it goes ahead and removes the provisioning profile and uses a wildcard one i set up.. However I dont want to use the wild card provisioning profile.
So, I went back to create a new app identifier and I entered the id to be com.mydomain.AwsomeApp however this prompts an error
An App ID with Identifier 'com.mydomain.AwesomeApp' is not available.
Please enter a different string.
which suggests to me that when you create an app ID it is case Insensitive.. how do I get around this problem?
I think there is no other solution than deleting the app id and recreating it with the proper identifier.
Originally Apple had no options to edit, rename or delete an App-Id at all.
However at some point in 2013 they've added an delete button available in your members
provisioning center -> App-Id -> Edit one specific -> delete
Some users have reported, that the delete button has been disabled again but for me, it is still working:

Can't export IOS app archive from xcode for testflight

I have an IOS app archive that I want to validate and export so that I can upload it to itunes connect for testing with internal users first, then eventually beta testers. When I attempt to validate or export the archive I get a dialog titled "Failed to locate or generate matching signing assets:" with a message "Xcode attempted to locate or generate matching signing assests and failed to do so because of the following: An App ID with Indentifier 'myAppBundleId' is not available. Please enter a different string."
In the Apple Developer Member Center I had long ago created an app id for my app, corresponding APN ssl certificates, and a corresponding provisioning profile. Since I was unable to proceed as per the above dialog I tried giving my app a new bundle id, but when I then went to create an Archive with the new bundle ID it failed with a message "No matching provisioning profiles found". I next tried creating a new App ID that had an ID that matched my new bundle ID. When creating this new App ID I needed to enable push notifications, but it didn't show as enabled until I generated new SSL Certs.
I'm totally confused by all of this so this question really is about somehow finding clarity. I have a ton of unanswered questions that come to mind as I try to navigate this confusing Apple ecosystem. Some relate to the original issue and some are new questions that came up while trying things. I'll list:
When I created a new App ID for the same App, and created SSL certificates, I just reused the the CSR that I had previously created for the other earlier app ID. My thinking was that this might enable me to not actually have to do anything to my app or server since the CSR is the old one. But I'm wondering if it would fail because the bundle IDs and app IDs are new? I can't recall if there was anything in the CSR that matched to the bundle ID or App ID.
Is the app ID the same as the bundle ID?
In Developer Member Center under iOS Provisioning Profiles, there is a column titled "status". My older provisioning profiles say "Active (managed by Xcode)" and my newest ad-hoc provisioning profile says just "Active". What is the difference between the two? What makes a provisional profile managed by Xcode?
In itunes connect my bundle id is prefixed with the xcode bundle id suffix. E.g. my bundle ID in Xcode is FirstName-LastName.AppName, but in itunes connect it puts AppName - FirstName-LastName.AppName. what the heck?
Does Xcode ever automatically create an App ID?
I read that itunes connect's testflight doesn't require provisioning profiles for internal users, yet Xcode is complaining that "No Matching provisional profiles found" when I attempt to make the Archive with my new Bundle ID. Is a provisioning profile required for internal users or not?
Is there a good and up to date and comprehensive resource covering
the essentials of things like app ids, bundle Ids, testflight,
provisioning profiles, how provisioning profiles relate to app IDs,
etc. I'm left confused by Apples docs, and I've found one tutorial
on youtube that was somewhat helpful and current but not
comprehensive enough and didn't get me beyond the issues I'm
encountering. It was titled "Basically: iOS TestFlight Beta
Testing" in case anyone reading this is interested.
I'm confused by the message in Xcode "None of the valid provisioning profiles allowed the specified capabilities: Features: push, interAppAudio, and passbook". My confusion is because in Developer Member Center these features are setup when creating an App ID not when creating a provisional profile.
Any help or advice is appreciated.
I had the same issue a few days ago, fixed it by removing all invalid provisioning profiles from my account on https://developer.apple.com/, then I created a new valid provisioning profile and added the newly created one in XCode. Then in build settings I selected the valid provisioning profile instead of auto, and I was able to export with no issues. Good luck :)

Resources