Aubrey Quinn
Aubrey Quinn

Reputation: 311

iOS app store NSBluetoothAlwaysUsageDescription - rejection

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.

Info.plist

config.xml file

Upvotes: 3

Views: 6970

Answers (3)

Rishi
Rishi

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

bkhines
bkhines

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

Vinod Kumar
Vinod Kumar

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

Related Questions