I'm confused that my iOS binary file was automatically removed from activity of iTunesConnect.
I confirmed that the binary file was uploaded as shown in the image. And I tried twice though..
Is this iTunesConnect bug or Should I fix something in my code?
Does anyone have suggestion?
Adding missing privacy-sensitive key data usage in apps "Info.plist" the problem can be fixed.
Check and add the missing keys in your Info.plist file. Refer the link https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html for more info.
Some keys might be used by the 3rd party pods included in your application. Find them and include in your Info.plist file.(You can get them easily from App Store email sent to you)
Keys Examples similar to which you will need to add: NSCalendarsUsageDescription,NSContactsUsageDescription, NSLocationWhenInUseUsageDescription, NSPhotoLibraryUsageDescription etc.
Related
So I had my keys before in the info.plist file, but I wanted to localize them, which I did, so I created the infoPlist.string for english and spanish. They both work. But when I attempted to upload the build to the store, it sent me a rejecting email saying that the keys are missing from the info.plist. I removed them from there since I had them localized now. How am I supposed to do it now? If I add them back into the Info.plist, it might take those as default?
What should I do here?
Thanks in advance.
I submitted a Xamarin Forms iOS application to the App Store, but received the following email:
ITMS-90683: Missing Purpose String in Info.plist - Your app's code
references one or more APIs that access sensitive user data. The app's
Info.plist file should contain a NSContactsUsageDescription key with a
user-facing purpose....
ITMS-90683: Missing Purpose String in Info.plist - Your app's code
references one or more APIs that access sensitive user data. The app's
Info.plist file should contain a NSCalendarsUsageDescription key with
a user-facing purpose...
ITMS-90683: Missing Purpose String in Info.plist - Your app's code
references one or more APIs that access sensitive user data. The app's
Info.plist file should contain a NSMicrophoneUsageDescription key with
a user-facing purpose...
ITMS-90683: Missing Purpose String in Info.plist - Your app's code
references one or more APIs that access sensitive user data. The app's
Info.plist file should contain a NSAppleMusicUsageDescription key with
a user-facing purpose
ITMS-90683: Missing Purpose String in Info.plist - Your app's code
references one or more APIs that access sensitive user data. The app's
Info.plist file should contain a NSSiriUsageDescription key with a
user-facing purpose
ITMS-90683: Missing Purpose String in Info.plist - Your app's code
references one or more APIs that access sensitive user data. The app's
Info.plist file should contain a NSBluetoothAlwaysUsageDescription key
with a user-facing purpose
However I'm not using any of the permissions mentioned above. My only Nuget references are
Acr.UserDialogs
Newtonsoft.Json
SharpZipLib
I added the missing strings to the info.plist and resubmitted the App. Didn't get the email but Apple still rejected it, asking for further information regarding how the app uses the requested permissions.
Any help is greatly appreciated!
The issue was related to the "Mono Linker". A million thanks to #SushiHangover in the comments above for pointing it out.
If anyone is experiencing the same problem, simply go to the iOS project options and set the linker to "Link All" as shown below:
Awesome! My Xamarin Forms IOS app was passing the Apple upload validation process but wasn't visible in testflight. I was scratching my head, I tried changing the Linker settings to "Link All" from "Don't Link" and that fixed the issue.. I had a gotten a email from apple saying that my app was missing several purpose strings in my info.plist file such as microphone and contacts etc just like the poster of this thread...
I was trying to upload a build(Version:2.1, Build:2.1.0) from Xcode 8. It failed with following error.
After 9-10 failed attempts, I succeeded once but that binary is not appearing on iTunes Connect. It's been 15 hours since and the binary is still not appearing on iTunes Connect.
So I decided to perform following steps:
Re-archive and submit the build(Version:2.1, Build:2.1.0) again. It says the same build already exists.(I can't see it on itunesconnect)
Re-archive and submit the build(Version:2.1, Build:2.1.1). In first 6-7 attempts, it gave the same error as shown in the screenshot. But at last, the build was submitted successfully. (I still can't see any build on iTunes Connect)
I contacted Apple support and here is the answer I got from them,
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
Applying this fix solved my problem. The binary get uploaded in the first attempt and it also has appeared in itunesConnect.
Check your email, Apple will send you keys(from info.plist like NSPhotoLibraryUsageDescription etc.) which you missed.
Just add all of them and fill up description in keys
Example :
NSCameraUsageDescription
Please allow the app to access your photo camera
NSLocationWhenInUseUsageDescription
App use Locations service
NSMicrophoneUsageDescription
Please allow the app to access your photo microphone
NSPhotoLibraryUsageDescription
Please allow the app to access your photo gallery
Try it using XCode 8... Open the Application Loader(Xcode -> Open Developer Tool -> Application Loader). Choose the build that you archived and then submit to the Apple Store.
Maybe, you need change the build version before do the step above.
It works for me. I hope that works for you!
My app only require iCloud UIDocument service. However, it sent me a warning email below and a invalid binary warning notification after uploading to iTunesConnect from Xcode 8.
It is non-sense to ask me to add NSCalendarsUsageDescription and NSBluetoothPeripheralUsageDescription description on Info.plist
May I miss some setting after upgrade Xcode from 7 to 8 ??
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value explaining to the user how the app uses this data.
You need to put values for the two keys mentioned in your Info.plist file:
NSCalendarsUsageDescription
NSBluetoothPeripheralUsageDescription
e.g. "MyAPP needs access to your calendar for events"
If you do not need/use these capabilities, then there is something in your binary that's triggering Apple's static analyzer.
Check 3rd party libs in your project because some of them have been causing similar issues to this (in your case it may well be AdMob) - some have updated their SDKs to fix it, so make sure you're on the latest version of 3rd party SDKs.
Check the Capabilities section of your App's target configuration - is there anything in there that is unnecessary - particularly in the "Background Modes" section.
I had the same problem, review your info.plist and tries to add the following fields
Privacy - Photo Library Usage Description
or
Bluetooth Sharing - NSBluetoothPeripheralUsageDescription
You can check here the permissions that now requires iOS 10 in its info.plist here: https://blog.xamarin.com/new-ios-10-privacy-permission-settings/
This worked for me.
Im trying to upload my first app through Application Loader and Im getting this error:
ERROR ITMS-90190: "Invalid Info.plist Key. The key 'UISupportedDevices' in the Info.plist file is not valid."
I have no idea what it means and I can't find info or support in Apple documentation
My app has also an Apple Watch application target
Solved, It seems to be a problem with Apple's servers. They answered
me now it's solved.
I am assuming you are using Xcode 7. Do this.
make a backup of your info.plist file
open you info.plist file with TextEdit
Find xml node for UISupportedDevices
remove that entire node and save
Then do clean, build, re-archive and upload
I checked and there should not be any value called UISupportedDevices in your plist file. At least there isn't one if you create a brand new project in Xcode 7
Solved, It seems to be a problem with Apple's servers. They answered me now it's solved.