Application Loader, Xamarin and GoogleCast v3 Binding Library

I recently had to upload a new version of an Xamarin.iOS 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:

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.

Looking at the documentation, it was quite clear that I indeed had forgotten to define the NSBluetoothPeripheralUsageDescription key.

After resolving the issue, I tried uploading using the Application Loader. Unfortunately, the same issue occurred. Instead, I used the Organizer in XCode, and this time, the application was uploaded and processing completed. What a relief!

Lessons learned

Seemingly, the Application Loader doesn’t handle Binding Libraries from Xamarin.iOS that well when they are included as a Framework. Going forward, I’ll instead use the Organizer in XCode for publishing.

I am although certain that other developers will stumble upon this issue as well. Conclusively, Apple should either consider resolving the issue with the Application Loader or remove it from the market entirely.