2

Missing Purpose String in Info.plist File - NSCalendarsUsageDescription key, NSBluetoothPeripheralUsageDescription , NSAppleMusicUsageDescription key, NSMotionUsageDescription key, NSSpeechRecognitionUsageDescription key

My package.json

"dependencies": {
    "immutable": "^3.8.2",
    "native-base": "^2.8.0",
    "react": "16.4.1",
    "react-native": "0.56.0",
    "react-native-animatable": "^1.3.0",
    "react-native-camera": "^1.2.0",
    "react-native-circular-progress": "^1.0.1",
    "react-native-countdown-circle": "^3.0.0",
    "react-native-firebase": "^4.3.8",
    "react-native-navigation": "^1.1.484",
    "react-native-notifications": "^1.1.20",
    "react-native-push-notification": "^3.1.1",
    "react-native-qrcode-scanner": "^1.0.1",
    "react-native-svg": "^6.5.2",
    "react-native-swipeout": "^2.3.6",
    "react-navigation": "^2.12.1",
    "react-redux": "^5.0.7",
    "redux": "^4.0.0",
    "redux-logger": "^3.0.6",
    "redux-persist": "^4.10.2",
    "redux-persist-transform-immutable": "^5.0.0",
    "redux-saga": "^0.16.0",
    "reselect": "^3.0.1",
  },
  "devDependencies": {
    "babel-jest": "23.4.2",
    "babel-preset-react-native": "^5",
    "jest": "23.5.0",
    "react-test-renderer": "16.4.1"
  },
  "jest": {
    "preset": "react-native"
  },

Any solution, as I haven't used any of these features in my app and also I don't need these kinds of access in my app.

FortuneCookie
  • 1,756
  • 3
  • 25
  • 41

3 Answers3

2

Maybe a dependency you've installed uses those permissions. I faced all sorts of permissions issues when I tried to validate an app which used react-native-permissions to handle permissions. Since the library facilitates all types of permissions (regardless of whether you use it or not), it'll get flagged and you'll be required to add permission strings to Info.plist.

Looking at your packages, I can't see any usual suspects though. You'll have to dive deep into the dependencies to make sure.

Thahzan
  • 975
  • 2
  • 9
  • 23
  • I haven't used react-native-permissions in the app. Will there be any issues, if i upload the app to the store? Its already in Testflight as of now. The client is a highly privacy concerned fellow,and these unnecessary permissions are causing trouble for me as these are not seen in AndroidManifest or elsewhere. – FortuneCookie Sep 28 '18 at 07:17
  • I used react-native-permission to get the point across that the permissions may be an issue with a dependency. If you've gone as far as getting the application approved for TestFlight, you can go ahead. The processing step would've failed if there was an issue with the binary. Those usage descriptions will not even be displayed to the user unless you initiate an action (something like adding something to user's calendar). However, it is best to investigate where these usages are being fired from. – Thahzan Sep 28 '18 at 09:07
  • I cannot comment regarding the client or the privacy factor though. It's up to you (or the person responsible for the tech of the project) to decide. – Thahzan Sep 28 '18 at 09:10
0

If you don't know why your app use these permission just check the code.

Maybe it's from the react tutorial or project that you code.

For fixing just add these key to info.plist file with the descriptions

If you still wondering why you app need these permission you can check this solution: What makes NSCalendarsUsageDescription required?

antonio yaphiar
  • 450
  • 3
  • 9
  • My client is very much concerned about privacy issues and these unnecessary permissions are making trouble for me. There is nothing wrong in the code as i have already inspected the code manytimes, and some dependencies i have used has created this issue, i guess! – FortuneCookie Sep 28 '18 at 07:15
0

In my case, a project was using an old version of react-native-permission version 1.1.1. The issue was raised here and here.

react-native-permission library fixed the issue in 2.0.0, according to this release:

This new release is a complete rewrite to tackle two massives issues: splitting iOS permission request handlers to avoid embedding unnecessary ones and a negative app store review

Bertrand Martel
  • 42,756
  • 16
  • 135
  • 159