Wildcard App ID issue with Xcode 8.0 - ios

I used to have a provisioning profile with an associated wildcard app ID (*) to sign a bunch of apps for customers. Each explicit app ID is declared into the Bundle ID field in the Xcode project. The problem is that each app uses Wireless Accessory Configuration capability. As reported by Apple (https://developer.apple.com/library/ios/qa/qa1713/_index.html),
Because an App ID specifies a unique configuration of entitlements, Wildcard App IDs are for use with code signing all apps that do not enable app-specific capabilities.
Until Xcode 7.3 this wasn't a big deal, it always worked. After updating to the last public beta of Xcode 8.0, I'm not able to code sign my apps anymore using the wildcard app ID associated to my provisioning profile and I can't add explicit app IDs to it because they are already managed by customers. When I try using the new automatic code signing feature, it tells me that the app ID that I suggested in the Bundle ID field of my Xcode project cannot be registered to my development team (of course not!, because it belongs to the customer's team which I'm not a member of).
If I click in the Info disclosure button next to the Xcode managed profile, the only issue that I can see is that the Wireless Accessory Configuration capability is missing
So, could I ask the customer to add this capability to the explicit app ID in order to solve this issue?
If I try to code sign the app directly in the Build Settings using the old method with my provisioning profile (which I regenerated again), I always obtain the following issue:
"App" isn't code signed but requires entitlements. It is not possible to add entitlements to a binary without signing it.
Code signing is required for product type 'Application' in SDK 'iOS 10.0'
Could someone please help me addressing this problem? I'm stuck since days.

List of possible solutions:
Have them add you as a member to their development team.
Make the bundle ID dependent on the the build configuration. Then you can register an App ID yourself and add the capability.
Make the entitlements.plist-file dependent on the configuration. Have a separate entitlements.plist-file without the capability for your development and testing.

Related

IOS application, ID bundle errors on XCode

I created an application with the Ionic Framework that allows me to make hybrid applications.
When I open my project on XCode, I have errors from XCode that I can not solve.
My errors are:
"Automatic signing is unable to resolve an issue with the target's
entities file"
"Provisioning profile ios team provisioning profile * doesn't include the aps-environment entitlement "
"Code signing is required for product type 'Application' in SDK 'iOS 10.3' "
I think the ID bundle has a mistake, however, I do not understand how to solve it.
How do I create a correct ID bundle without going through the project creation box since mine is already creating basic? (My ID bundle was generated by the global application's in the config.xml file)
Is it necessary to have a paid developer account to be able to create one? Or can I test my app simply on my phone?
Thanks in advance!
These errors you are getting because of the no Provisioning profile & Developer Certificate.
To Brief of what is provisioning profile & Developer certificates are, These are security certificates providing by Apple to make sure that the iOS application is built by identified developer.
If you see there is a check mark: "Automatically manage signing" on.
Because of that, it's trying to create provisioning profiles and
certificates automatically without any proper apple membership
account. That results in an error.
To run on a device, you don't need to have paid account. Any Apple ID will work. You need to have at least normal Apple ID and have to put any random bundle identifier there to run on your iPhone. (You can follow this link to How to run on iPhone without certificates)
Answering another question of yours: Yes, it's required to have Apple paid account to create a Bundle identifier. Even if you test it now on iPhone using above trick, to distribute in future to AppStore you need one.

Cannot create an App ID with matching Bundle ID in Xcode project for first release using Xcode 8.0

I am trying to create an App ID for my first release. I have a new company developer account.
I get the error message 'An App ID with Identifier '' is not available. Please enter a different string' when trying to create the App ID.
This happens when:
I type the name of my app in the App ID Description field and I type the matching Bundle ID from my Xcode project (com.MyCompany.MyProductName) in the App ID Suffix field but I get the error and cannot continue.
However, If I type in, say, 'com.MyCompany.MyProductNameVersion1', which is different from the Bundle ID in my Xcode project, then I don't get the error and am able to continue??
To my knowledge, I need to enter the same Bundle ID as in my Xcode project but its not working as advised.
Been stuck on this for a few days, reading and trying all I possibly can, I cannot find a solution and cannot proceed.
Any help is appreciated
UPDATE: In the Accounts section of Xcode > Preferences, I have two entries under 'Team' : the first is my name and (Personal Team) and under 'Role' it says 'User'... the second is my company name and under 'Role' it says 'Agent'.. I also thought this screenshot may be useful. It shows the signing section of the General tab when the Team field is set to my company name:
I managed to get this sorted. #Beninho85 pointed me in the right direction but the info in this thread was the answer I needed: How to manage Personal Team info on Apple Developer website?
I had a two teams in my developer account. One was a previous Personal Team before I joined Apple Developer as a 'company'. This Personal Team had created App ID's for development provisioning profiles which were conflicting with identically named App ID's I wanted to create for distribution profiles using my company name. Identically named App ID's cannot be generated within the portal. Only Apple can delete personal Team accounts already registered with them. I had them delete the personal team and App ID's.
You have the answer in your question.
The bundleId must be unique for each application. So if you created this bundleId on another developer account, you can't use it anymore. Delete the previous one or create a new one.
If you're allowing Xcode to "Automatically" manage signing, and you don't see your App ID on the Certificates, Identifiers & Profiles web portal, try enabling any capability (i.e. the Siri capability) which will force Xcode to regenerate a provisioning profile (and register the App ID with iTC).
Verify that a new provisioning profile has been created by going to Targets > [Target Name] > General. Next to Provisioning Profile, tap the information button and verify that the Created date is today. Once you see your App ID registered in the portal, you can disable the previously enabled capability.

"None of your accounts are a member of XXXXX" trying to set an app group

I've developed an app for a customer who has their own Apple account and profiles etc.
They have given me their development profiles and dev keychain certificate and want me to deliver the app to them signed with their dev profiles which they will then replace with app store distribution profiles.
I'm having a problem adding an app group to the capabilities. When I click on the + button to add an app group I get the following error:
This is the signing settings. When their developer provisioning profile was imported as the signing profile XCode set the Team to "Unknown Name (XXXXX)" so it must have pulled that team name from the profile.
In XCode's accounts I only have my own Apple IDs added, I don't have their Apple ID added (its not possible to without knowing their password though?, something I won't get). I presume this might be why I am getting that error code?
Is there anyway of adding the group id to the project without having to add their Apple ID to XCode's account section?
They have given me their development profiles and dev keychain certificate and want me to deliver the app to them signed with their dev profiles which they will then replace with app store distribution profiles
That whole approach is mistaken (as you now know). They have two choices:
You can just develop the app under your own banner, making all your own profiles as needed, and they can make all the necessary substitutions and other changes at their end when they have the code. Or:
They must make you formally a member of their team (e.g. an Admin), at least while you're working on the app.

Xcode error: no provisioning profiles with a valid signing identity matching the bundle identifier

I'm trying to run an iOS app on my iPhone in xCode. The app is essentially a third party keyboard for iOS, and it was made by a group of friends. They have added me as 'developer' in iTunes connect. When I try to run the app on my iPhone I get the following error:
No provisioning profiles with a valid signing identity (i.e.
certificate and private key pair) matching the bundle identifier
“com.nameofteam.nameofapp.nameofapp-keyboard” were found. Xcode can
attempt to fix this issue. This will reset your code signing and
provisioning settings to recommended values and resolve issues with
signing identities and provisioning profiles.
When I click on 'Fix Issue', it says:
An App ID with Identifier "com.nameofteam.nameofapp.nameofapp-keyboard" is not available. Please enter a different string.
TL;DR Xcode is very particular about the name you give your App ID in the member center. Having the correct bundle identifier is not enough. You must use the specific format shown below for Xcode to "see" your App ID.
#romrom's solution of deleting the App ID and having Xcode create a new one was a clue. Unfortunately it was a nonstarter for me since my App ID was used by a Store app and therefore could not be deleted.
However, I discovered through some experimentation that I could solve the problem by manually editing the exiting App ID. It turns out that Xcode is really picky about the name of the ID, and not just the bundle ID.
For a typical bundle ID such as com.mycompany.appname, the App ID name must be in this format:
XC com mycompany appname
a name in any other format won't be seen by Xcode.
How to check if you're affected / How to Fix
Log in to the Member Center.
Click on "Certificates, Identifiers & Profiles".
One the left-hand navigation bar, click on "App IDs".
Locate the App ID with your bundle identifier.
If that App ID doesn't have the correct name format (as shown above), click on it then click the Edit button.
Change the name and click Done.
Enjoy the reduction in stress and anger.
P.S. There are some related problems if you're using Xcode 7.3 in which it won't automatically create proper distribution profiles for you, even if you fix the name as I mentioned above. The solution is to downgrade to 7.2.1 or 7.3 Beta or use a tool like fastlane/sigh.
Try this,
Add your Apple ID to Accounts preferences in Xcode.
Go to General tab in Project and choose your team name from the Team pop-up menu.
Below the Team pop-up menu, click Fix Issue.
For starters you want to make sure your bundle identifier is exactly the same as the one on iTunes connect otherwise,
since you seem to have the source code it appears the bundle id you are trying to use is already in use, try a different unique identifier.
Also make sure you have your Apple ID connected to Xcode, it can be added in the accounts section of Xcode preferences. You may also need to create a self signing certificate in keychain access.
as stupid as it sounds - make sure your Provisioning Profile is set correctly in the "Build Settings" tab, under "Code Signing" section, and that it matches the Code Signing Identity certificates.
In my case, I had the Ad-Hoc dist & Release provisioning profiles set correctly, but the the DEBUG was set to Automatic.

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.

Resources