The app's Info.plist file should contain a NSBluetoothAlwaysUsageDescription key while the key is in the plist file
If you are not using Bluetooth,
just add this to your Info.plist file:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app does not request this permission or utilize this functionality but it is included in our info.plist since our app utilizes the react-native-permissions library, which references this permission in its code.</string>
Apple deprecated NSBluetoothPeripheralUsageDescription property in favor of NSBluetoothAlwaysUsageDescription.
See details here: link to Apple docs
If you are using bluetooth,
just add this to your Info.plist file:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app uses bluetooth to find, connect and transfer data between different devices</string>
Someone posted an answer that helped me, but then deleted it! To paraphrase the answer:
Adding the privacy keys to the plist without knowing what is triggering the error from Apple is not the best way to solve this.
In my case, when I did a grep search I found that there is some reference to CoreBluetooth.framework
inside my project.pbxproj
. I removed the reference and the build and TestFlight upload succeeded!
To search use the following command:
grep -r -a CoreBluetooth.framework ProjectFolder
I got the root cause
We have below two default options in plist to enter the bluetooth usage.
1.Privacy - Bluetooth Peripheral Usage Description 2.Privacy - Bluetooth Always Usage Description
But Xcode save this option in the source code like the below
1.NSBluetoothPeripheralUsageDescription instead of Privacy - Bluetooth Peripheral Usage Description
2.Privacy - Bluetooth Always Usage Description instead of Privacy - Bluetooth Always Usage Description
So now the point is NSBluetoothPeripheralUsageDescription is deprecated and its expecting the key "NSBluetoothAlwaysUsageDescription"
Here is the solution, open the plist file as source code in Xcode and copy-paste the below key-value pair
Key: NSBluetoothAlwaysUsageDescription Value: This application requires bluetooth in order to bla bla bla.