As described in my own blog post, I recently had to upload a new version of an application and used the Application Loader to do so. The difference between the previous and new version of the application was that the new one included a Binding Library for Google ChromeCast v3.
When I tried to upload, I got the following error:
ERROR ITMS-90046: "Invalid Code Signing Entitlements. Your application bundle's signature contains code signing entitlements that are not supported on iOS. Specifically, value 'XXXXXXXXXX.com.company.app' for key 'application-identifier' in 'Payload/application.app/Frameworks/GoogleCast.framework/GoogleCast' is not supported. This value should be a string starting with your TEAMID, followed by a dot '.', followed by the bundle identifier."
I spent days tracking down the issue by both reading the official documentation and forums. By sheer luck, I tried uploading using the Organizer in XCode. To my surprise, the application was successfully uploaded to iTunes Connect and started processing. Although, after some time, I received a mail stating that:
[…] The app’s Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value explaining to the user how the app uses this data.
After resolving the issue, I uploaded once more using the Organizer, and to my relief, everything worked out fine.
I was wondering if anyone else has experienced this issue? I consider submitting a bug report to Apple.
Posts
@DavidLaundav
Hi David,
I am having a similar issue. I am using the application loader and getting an ITMS-90046 error. I rebuilt my provisioning profiles a few times and verified I have the associated domains enabled. The entitlements.plist is well formed and contains the bundle identifier prefixed by the team id. I would like to try the approach you took but don't know how proceed. There are no archives listed and I cannot see how to add the ipa file built in Visual Studio Xamarin, although I can see it in the build folder. Any help you can provide is greatly appreciated as I have been on this for over a week and apple support hasn't been much help.
thanks
Ken
Hi @KenNickerson,
I'm sorry to hear you're facing the same issue. We are also unfortunately still facing the issue, and have been given no official explanation. Although, we no longer use our own binding library for ChromeCast for iOS, but use the official NuGet which was made official not long ago. We hope this will solve the issue at hand.
In regards to your question, and as explained in my original post, we are using the Organiser of XCode to upload to iTunes Connect.
To upload using the Organiser, you first of all have to build an
.xarchive
file which should by now, with the introduction of Xamarin 4, be possible in Visual Studio. You can also use the theArchive for Publishing
option in theBuild
menu as mentioned in this guide.After creating the
.xarchive
, which requires some patience, you can find the file at~/Users/<user>/Library/Developer/Xcode
on OS X if needed be. You can also simply openXCode
, open theWindow
menu and selectOrganiser
. The archives located at the previously defined path will be displayed here.An
.ipa
unfortunately won't suffice in this matter. After generating the.xarchive
file, simply clickUpload to App Store
in the Organiser for the given Archive.This has, for now, solved the issue we experience when uploading using the Application Loader.
Please don't hesitate to reach out to me if needed be.
Hi @KenNickerson,
I apologise, but I just spent a long time writing a detailed explanation, and after editing due to a markdown mistake, my entry was deleted. I hope you received an email which contains my response, but if not, I'll briefly summarise.
Unfortunately, building an
.ipa
will not suffice. Instead, you have to build an.xarchive
file which should be supported with Xamarin 4 in Visual Studio.As mentioned under the headline
Archive for Publishing
(which I can't link to) in this guide, all you have to do is basically prepare an archive for publishing.After doing so, simply open XCode, select
Window
in the menu and clickOrganiser
. The archives which have been created should be listed. Now simply select the archive you want to publish, clickPublish to App Store
and follow the process.This is at least how we have solved the issue for now.
Please don't hesitate to reach out to me if needed be.
@DavidLaundav
Thank you for your response. I actually worked through all of the issues I had and did successfully upload an ipa with associated domains entitlement, using application loader. I had various code signing issues. I initially corrected by going through my key chain and removed any duplicate entries and recreated my provisioning profile. My key chain entry for the distribution certificate was still missing the private key so I started over again, from the development certificate, then the distribution and then the provisioning profile. I set my profile in a dummy xcode project with the same bundle id, closed xcode and reopened. Closed VS and reopened it also. When I select the actual team and the actual profile, I was able to upload the ipa, only to get an email from iTunes Connect informing me the binary still had a code signing issue . I can only figure that there was something cached from the original profile and VS wouldn't let it go. So I came across other posts, one in particular from John Miller. He suggested you clear out the codesignprovision key in the xml of the IOS csproj file (I used Notepad++) and then reopened VS. I felt it was a hack but tried it out of desperation. I made sure the team was correct but left the profile to Automatic. Then it worked for me.
Thank you. It does work for me.> @DavidLaundav said:
It works for me .. thank you for your help
Change this in Entitlements.plist
<key>aps-environment</key> <string>development</string>
To this:
<key>aps-environment</key> <string>production</string>
Change this in Entitlements.plist:
To this:
My two cents here.
Just now I stuck in this problem because when I copy my TeamID / Application ID from the apple developer portal which brings a lot of unrelated value to the entitlement.plist. I didn't notice this because I was using Xcode to edit the entitlement.plist and the input box will not display everything after the first new line character.
I suggest using plain text editor for entitlement.plist for this case.
Thanks,
Samuel
THANK YOU! I was stuck on this, and would never have figured it out without your input.