How can I request iOS storage permission in react native? - react-native

I have found a package called react-native-permissions which gives most of the permissions in Android and iOS. Currently it is not supporting Storage permission in iOS. How can I request iOS storage permission in react native?

You need to add the following fields in your plist.
<key>NSPhotoLibraryAddUsageDescription</key>
<string>*your app name* would like to save photos from the app to your gallery</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>*your app name* would like to access your photo gallery for uploading images to the app</string>

If you want to save data you don't need any permission for that on iOS, it is allowed by default. Source It is the only reason why it is not supported by react-native-permissions.

Related

My React Native Expo cli app rejected from app store due to the following causes “Guideline 5.1.1 — Legal — Privacy — Data Collection and Storage”

We noticed that your app requests the user’s consent to access the photos, but doesn’t sufficiently explain the use of the photos in the purpose string.
To help users make informed decisions about how their data is used, all permission request alerts need to explain how your app will use the requested information.
Next Steps
Please revise the purpose string in your app’s Info.plist file for the photos to explain why your app needs access and include an example of how the user’s data will be used.
You can modify your app’s Info.plist file using the property list editor in Xcode.
But my app is developed by “React Native” expo cli. the app.json file configuration is shown following below also I have attached the app.json file of my application
EXPO SDK Version is “expo”: “44.0.0”,
React Native Version is “react-native”: “0.64.3”,
How I can overcome it? please help me

how to grant permission for background location react native

I'm struggling to publish the app to google play because of that permission request.
I have provided location permission asks. but it has only 2 label options allow/reject.
as far as I see I need to put getBackgroundPermissionOptionLabel() with more options.
followed: https://developer.android.com/training/location/permissions#foreground
how do I do that on react native?

Expo Notification askAsync() - Is there a way to customize the message?

I am using EXPO on a react native project and want to ask the user for push notification permission.
When I use the const {status} = await Permissions.askAsync(Permissions.NOTIFICATIONS); the message that appears is
"Expo" would like to send you notifications. Notifications may include sounds, badges, alerts and icon badges. These can be configured in settings.
My end user doesn't know what "Expo" is, they just know the app name. Is there a way for me to customize the "Expo" part to the app name?
How have people handled this when their app is ejected and push to the app store?
You can find the answer in here: https://docs.expo.io/distribution/app-stores/?redirected
Which says:
System permissions dialogs on iOS
If your app asks for system permissions from the user, e.g. to use the device's camera, or access photos, Apple requires an explanation for how your app makes use of that data. Expo will automatically provide a boilerplate reason for you, such as "Allow cool-app to access the camera", however these must be customized and tailored to your specific use case in order for your app to be accepted by the App Store. To do this, override these values using the ios.infoPlist key in app.json, for example:
"infoPlist": {
"NSCameraUsageDescription": "This app uses the camera to scan barcodes on event tickets."
},
The full list of keys Expo provides by default can be seen here. Unlike with Android, on iOS it is not possible to filter the list of permissions an app may request at a native level. This means that by default, your app will ship with all of these default boilerplate strings embedded in the binary. You can provide any overrides you want in the infoPlist configuration. Because these strings are configured at the native level, they will only be published when you build a new binary with expo build.
You probably use Expo Go to develop your app , when you create standalone app (when you deploy the apk) it will show the app name that you specified in app.json.

How Expo(React Native) can access gallery and external storage without CAMERA_ROLL permission?

I have a terrible question..
I hope there is anyone who know this problem..
In EXPO App which is a wrapper API for React Native,
How can Expo Image picker example app can access Gallery(external storage) without requesting any external storage access permission to user???
original source code is here..
https://docs.expo.io/versions/latest/sdk/imagepicker/
I tried with removing any askAsync(CAMERA_ROLL.permission) or getAsync(CAMERA_ROLL.permission).
So the example app has no permission about accessing external storage...
BUT!! I press the button, It access the Gallery....
How can it be possible??
I double check permission on the app, but there is no granted permission to external storage...
Please let me know...
I think it is the appropriate thing which firstly asked permission, then access the external storage..
P.S I tested it with android phone only.
i have never checked permissions..
To stop expo app from having this permission, do the following:
Remove all reference to the permission requests (That you already did)
Remove the Image launcher (but it seems you don't want to do that)
Clear the expo application permission of media access
Step 3 is what you are looking for, to clear application settings go to your phones settings -> application management -> select expo app -> permissions and clear the gallery/media permission.
Now when you run the application again you will not be able to access the gallery even if you press the button as you mentioned and if you include the getAsync to request for permission you will be prompt with asking for permission.
EDIT:
To explicitly set permissions for stand alone applications modify your app.json file and add the "permissions" parameter under the android configurations there, by default expo uses all permissions of your device. specify there the permissions you want your application to have.
Please refer to this link for further details on how to configure your app.json file.
Hope this helps!

Where to configure deep link URL schema in React Native / Expo

I want to create a deep link in my react native app so a user can share a URL and then the other person can open this url and have the intended app open.
I am following this tutorial and they say info.plist needs to be edited with a URL schema.
However, I believe this is only for IOS? And also I don't believe I have access to these files when using Expo?
How can I specify my url schema and achieve deep linking in Expo?