Reputation: 311
I am trying to put my cordova app up on the iOS app store. I am using cordova cli 8. It keeps getting rejected and says this error:
App Store Connect Dear Developer,
We identified one or more issues with a recent delivery for your app, "MyApp" 4.19.2 (4.19.2.4). Please correct the following issues, then upload again.
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 string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).
Best regards,
The App Store Team
It's strange because I can see the string in my Info.plist file and in my config.xml file.
I don't know why it keeps getting rejected. My app doesn't use Bluetooth on it's own, it just has some cordova plugins that include it in there.
Upvotes: 3
Views: 6970
Reputation: 793
This might be useful to some one, who use Zoom iOS SDK inside the app
When I uploaded the binary, Xcode said that app was uploaded successfully... But I received an email from App Store Connect with two issues:
First Issue: NSBluetoothPeripheralUsageDescription is required
Second Second: NSBluetoothAlwaysUsageDescription can be relaxed
I have provided the purpose description for the First Issue. This time the app is available through TestFlight for testing.
So it would be better to provide descriptions in the info.plist
for both the issues like below.
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Some useful description: </string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Some useful description: </string>
Upvotes: 0
Reputation: 191
One thing that originally worked for me was setting the value of the diagnostics plugin in config.xml and updating the ios.json file under platforms/ios folder to remove all references to Bluetooth. I also read that you need to update frameworks.json but if I removed that, the build failed. I considered changing the value to 0 but when I tried it with the other changes, it worked for a while.
config.xml changes (outside of platform nodes):
<preference name="cordova.plugins.diagnostic.modules" value="LOCATION WIFI CAMERA NOTIFICATIONS MICROPHONE CONTACTS CALENDAR REMINDERS MOTION NFC EXTERNAL_STORAGE" />
And delete all references to bluetooth in ios.json.
Upvotes: 2
Reputation: 3385
You need to specify in NSBluetoothAlwaysUsageDescription, why and where you are using Bluetooth and location. Then resubmit it, they will accept it.
Upvotes: -1