Keyboard Extension can no longer submit to iTunes after adding groups - ios

I'm creating my second keyboard extension app. I've been submitting through iTunes TestFlight for testing for a couple months with no problems. But after making two changes, it no longer submits. I get the error "Failed to locate or generate matching signed assets and ailed to do so because of the following issues.
"not matching provisioning profiles found for "Applications/spkapp.app/Plugins/spk.appex"
None of the valid provision profiles allowed the specified entitlements: beta-reports-active, com.apple.security.application-groups"
The two changes I've made were to the Bundle Display Name and adding the Groups entitlement. My app ids for the extension and app both have Groups activated and set to the same group.
I've tried
1) Restoring Bundle Display Name to previous name.
2) Rebuilding all profiles several dozen times
3) Creating new profiles from scratch.
4) Refreshing profiles in Xcode, even downloading them and installing new ones and deleting the old manually.
5) Cleaning/deleting derived data/restarting Xcode/rebooting OSX
6) Comparing it to my shipping keyboard that uses the Groups entitlement. Everything matches from the entitlement files to the project settings to the provisioning profiles to the App IDs settings.
I think the problem is something to do with the Groups obviously, since it's the new addition. But I did look at Technical Q&A QA1830, but it doesn't seem helpful because I have a Store provisioning profile and it was working, so the beta-reports-active flag seems like a spurious error.
Any other suggestions?

Turns out the problem was caused by adding the Groups entitlement. Xcode creates a custom app ID for your keyboard extension, with a name starting with "Xcode iOS App ID" followed by your bundle IDs. The App ID itself will be the combined bundle ids of your app/extension as the App ID such as com.companyname.appBundleID.extensionBundleID. It's settings will match your other AppIDs, including the App Group settings.
It will also create a distribution profile for this App ID, and you need this distribution profile in order to submit to the store with groups enabled. The distribution profile will be named something like "XC: com.companyname:appBundleID.extensionBundleID". If this isn't installed when you submit to the store, you will get the error that your plugin does not have a correct profile with the groups entitlement as described above.
Note: I could submit to the story with the group entitlements disabled, so it seems this profile is only needed when you have specific entitlements enabled.
In my case, i don't know if Xcode neglected to create the distribution profile, or I deleted it when trying to clean up. To fix it I just created my own distribution profile for the Xcode App ID and named it in the same way, and ensured it was installed in Xcode 6.1 ( preferences: Apple ID view details: refresh button). And now my keyboard submits properly, with group entitlements active.

Related

Xcode does not automatically create app id on developer portal

As indicated in the title, Xcode is not being able to automatically create app Id and provisioning profile for an app i’m developing. I have checked the “Automatically manage signing” option but on the developer portal i can’t see any app id or provisioning profile matching the provided bundle identifier.
The problem arises only if I select, in the “team” selection, my developer account . For example, by using my enterprise account, the “waiting to repair” message is shown in Xcode and i can see the new app id created in the enterprise account portal.
If I change the bundle identifier and I select again my developer account, nothing happens, no errors and no warnings. I’m able to install the application on a device and all seems to be good. However, in my developer portal I still do not see the app id and provisioning profile so i can’t send the application to iTunes connect in order to submit to the Apple store.
Moreover, trying with other apps, all is ok even using my developer account.
I searched on line but i can’t be able to find a similar problem, are there any particular settings that are preventing the automatic Xcode app id creation to work for my app?
EDIT
it seems it’s not a problem related to the particular app. In fact I tried to create a new application fromo scratch and i have the same problem. I still do not have the problem on old apps (already uploaded on itunes connect) but i have the problem on all the newly created apps. Is that a problem with my developer certificate?
EDIT 2
I noticed that for all the newly created applications the App ID is set to: " * " (see image below). In my old apps the App ID and iOS Team Provisioning Profile are not equals to " * ". I have also deleted the wildcard id from my developer portal but the problem still remain.
I had a similar problem and i solved with a workaround. I have enabled push notifications in the "capabilities" tab (i.e, adding them to the entitlements), in this way the app id and provisioning profile have been correctly generated on the developer portal. Later, I have disabled push notifications (not needed in my project).
It's only a workaround, hope it helps
Somewhat related: I played around with Apples provisioning profiles in a desperate attempt of trying to wrap my head around their signing nightmare. In the process I deleted all the app ids from apple.developer that Xcode had automatically generated.
Afterwards I couldn't get Xcode to regenerate the app ids and I didn't wanted to manually create them, so what I had to do was to delete the automatically generated provisioning profiles from ~/Library/MobileDevice/Provisioning Profiles/.

Issues changing from wildcard to explicit app ID

I have an iOS app with four targets (iOS App, WatchKit App, WatchKit Extension, custom framework), that I want to publish for in-house usage.
Since wildcard app IDs cannot be used for in-house apps, I created four new explicit App IDs.
I also created four new provisioning profiles, where I selected the "In House" option and the new App IDs.
Then I downloaded the new provisioning profiles to XCode and configured them in my Build Settings, for each target.
I also already executed the Clean-task, deleted my Derived Data-folder and deleted / re-downloaded all provisioning profiles multiple times.
The problem is: I still get the error
"Wildcard App IDs cannot be used to create In House provisioning profiles. Please use an Explicit App ID."
when I click the Upload to App Store button or try to export the archive.
What am I missing here or what else can I try?
Please ask if you need any further information or clarification.
(I already posted this in the Apple developer forums. But since it got very few views and no answers there, I decided to crosspost.)
I got the same error message about Wildcard App IDs when trying to export.
When searching for a solution I found this: https://stackoverflow.com/a/35400712 about Apple Worldwide Developer Relations Certificate Authority certificate being expired.
Checking my certificate and seeing it was expired I followed the directions and downloaded a new certificate: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer.
After removing the old certificate I was able to proceed with the export.
I had the same issue. I resolved it by importing another provisioning profile for development, in addition to the one I had imported before for release.

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.

contains entitlement values that are not supported

Have created an app-id as normal.
Then created an app-store distribution profile...as normal.
Set up the game in itunes connect
Installed the profile
Built the game with GS...all goes fine.
But when I upload my binary is rejected with that error : Invalid Code Signing Entitlements
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 "(my team bundle seed id is here).*" for key "com.apple.developer.ubiquity-container-identifiers" in basejumpxl is not supported.
Really not sure what I have done wrong...as I have done this loads of times, and never had this issue
Anyone point me in the direction of what my obvious mistake might be??
I finally successfully submitted the app, and it's now "Waiting for Review" status.
The problem is with the new "Enable for iCloud" configuration in App ID's.
Here's what I did to fix it. Hopefully this will help anyone who's having this issue.
In iOS dev portal:
Save yourself some time and just go ahead and delete the provisioning file you previously made for the new app you're trying to submit. (you may have luck by simply renewing it, but probably not.)
Go to your App ID, and click on configure. Once in configure, UNCHECK "Enable for iCloud" and click "DONE". iCloud configuration is what's causing the error. (This option had disappeared earlier, but is back again.)
Make a brand new provisioning file for Appstore distribution, and select the proper app id.
Download this new provisioning file.
Add this newly downloaded provisioning file into Xcode's organizer. Easiest way is to just drag and drop the file overtop Xcode's app icon.
Re-publish your game in Gamesalad, making sure to choose the NEW provisioning file you just created. (I went ahead and deleted the problematic provisioning file so I didn't get confused and accidentally choose the wrong one when publishing.)
Re-submit through Application Loader.
Hope this helps. :)

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