Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App Rejected in AppStore #266

Closed
bithavoc opened this issue Jul 31, 2018 · 23 comments
Closed

App Rejected in AppStore #266

bithavoc opened this issue Jul 31, 2018 · 23 comments

Comments

@bithavoc
Copy link

Describe your environment

  • React-Native version
  • Platform: iOS
  • Device (which one?): Appstore dist
  • react-native-permissions 1.1.1
  • Devtools: Xcode

How to repeat issue and example

Add "react-native-permissions": "^1.1.1", to package.json and submit to AppStore to use it only to detect a single permission.

Apple Rejects app:

Dear Developer,

We identified one or more issues with a recent delivery for your app, "XXXX". Please correct the following issues, then upload again.

Missing Info.plist key - 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.

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSAppleMusicUsageDescription key with a string value explaining to the user how the app uses this data.

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSMotionUsageDescription key with a string value explaining to the user how the app uses this data.

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSSpeechRecognitionUsageDescription key with a string value explaining to the user how the app uses this data.

Best regards,

The App Store Team

I only need it to detect push notifications, not bluetooth, speech recognition, etc.

Solution

Deprecate this library and split the logic detection into multiple libraries with a single detection feature per library that only link to specific apple frameworks.

@andrewmarmion
Copy link

It does actually explain in the readme that you need to add some keys to the plist.

App Store submission disclaimer

Did you include the items in your plist?

@tarouboy
Copy link

tarouboy commented Aug 5, 2018

I've just received App Store Review Team's notice. They told me the info.plist should include the description with more realistic "usage example". To avoid rejection I'd suggest fork this repo and remove unnecessary permissions.

@bithavoc
Copy link
Author

bithavoc commented Aug 5, 2018

Yeah that’s what they say, if you declare permissions in plist you better include why your app would need to prompt for these permissions. “usage example” doesn’t cut it anymore hence why I suggest we leave this repo for Android only and split each permission in it’s own module.

@martsie
Copy link

martsie commented Sep 4, 2018

We are also being rejected for this reason - We obviously have no need for Apple Music so there's nothing in the permissions info.plist that we can put for that.

Looks like this means that including this library in your react-native project will mean that you cannot submit an iOS app to the app store unless you are using every single on of the permissions.

@Gradner
Copy link

Gradner commented Sep 7, 2018

In the description have you tried simply entering something like "This permission is requested for the purpose of utilizing the react-native-permissions library and is not actually used by the app"?

The library references lots of different permissions so that you can properly call the ones you need within your app, but apple isn't able to tell that they are not being used, it can only see that they are referenced in the code of this library.

If "Usage Example" isn't sufficient anymore, a full explanation of why your library mentions all of these permissions seems like what they're looking for, no?

@micodel
Copy link

micodel commented Sep 14, 2018

Has anyone had any success with @Gradner suggestion?

@Gradner
Copy link

Gradner commented Sep 18, 2018

I actually submitted my app with that suggestion the day I posted it and it's accepted! :)

Again, they just want a reasonable enough explanation as to why your code references those permissions, even if it's not utilizing them in a functional way. Worked like a charm! Just make sure you include all the pertinent permissions listed in the readme.

Example of mine below:

<key>NSBluetoothPeripheralUsageDescription</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> <key>NSCalendarsUsageDescription</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> <key>NSCameraUsageDescription</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> <key>NSLocationWhenInUseUsageDescription</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> <key>NSPhotoLibraryAddUsageDescription</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> <key>NSPhotoLibraryUsageDescription</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> <key>NSSpeechRecognitionUsageDescription</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> <key>NSAppleMusicUsageDescription</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> <key>NSMotionUsageDescription</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>

@woodpav
Copy link

woodpav commented Sep 18, 2018

Here is a fork that doesn't have 'event', 'reminder', 'bluetooth', 'speechRecognition', or Apple Music.

https://github.com/woodpav/react-native-permissions

Relevant commit: https://github.com/woodpav/react-native-permissions/commit/7034bc8b485d580967e2b2469846eca1da60cfbb

@chrusart
Copy link

We started using this library but didn't want to have a phantom usage descriptions, so I've created #276
to selectively include permission code when really used.

@timkuilman
Copy link

@woodpav Thank you for this fork! I started using it today.

Any particular reason why you left the Motion Usage permission in there? I just tried to submit an app to the using your fork and this is the last issue Apple is complaining about.

@woodpav
Copy link

woodpav commented Dec 13, 2018

@timkuilman I'm using motion ;) Take a look at the commit to remove it on your fork.

@zoontek
Copy link
Owner

zoontek commented Sep 28, 2019

I am closing this since this issue does not exists anymore with the 2.0.0 release.

@tomasswood
Copy link

For those that get caught out removing it in v2 like I did. Permission-MediaLibrary and Permission-StoreKit both use NSAppleMusicUsageDescription. You can search in your node modules folder for the permission to see which module is using it.

@Hirurgo
Copy link

Hirurgo commented Sep 1, 2020

It reproduced on 2.2.0

@ghost
Copy link

ghost commented Jan 3, 2021

Im using 2.2.2 and the NSAppleMusicUsageDescription bug is still happening.

@Yandamuri
Copy link

@ghost I am using 3.0.2. is NSAppleMusicUsageDescription bug still exists in latest version as well. I haven't check it since I have not submitted my app to store.So can you please let me know if you had already submitted app to store.?

@Yandamuri
Copy link

@zoontek Has this issue been completely resolved in recent versions?

@mikehardy
Copy link

If you are not using a module that requires it (apparently MediaLibrary and StoreKit) from the above then it should be fine. If you are then you need to include the description. You should try it and report back.

@Yandamuri
Copy link

@mikehardy I am using MediaLibrary and mentioned it in info.plist. But not StoreKit. Now , Do I have to mention about store kit as well?

@mikehardy
Copy link

@Yandamuri I don't use those modules so I don't have a definitive answer. Suggest looking at the actual implementation to see the actual iOS API calls made, check the related documentation and verify directly. A bit tedious but way better than waiting for an App Store review / reject / re-submit cycle.

@Yandamuri
Copy link

@zoontek Can you please confirm that issue raised by @ghost is resolved in recent releases. so that I can confidently submit my app to the store. Thank You.

@zoontek
Copy link
Owner

zoontek commented Apr 29, 2021

@Yandamuri I don't use this kind of permissions either. Please submit yours and give feedback.

@chansoo04
Copy link

When I put NSAppleMusicUsageDescription to an info.plist through VSCode, it changes to Privacy - Media Library Usage Description in XCODE. I think there is some miss on this part.

If you guys still have issue, write description about media library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests