android.permission.CAMERA error when publishing app on play store - react-native

When publishing my app (using react native expo) on play store I got this error
APK or Android App Bundle must use authorizations that require a privacy policy: (android.permission.CAMERA).
But.... nothing that I have on my app requires camera!

if you read the message carefully you will see that you are using the permissions like camera and you don't supply a privacy policy. you need to supply a privacy policy if you do that. you can find more information about android privacy policy on google, for example here's the first link that came up in my search: https://www.iubenda.com/blog/privacy-policy-for-android-app/

Related

Can I authorize Google maps SDK before deploying an Expo app to Play Store?

I have an Expo app that uses react-native-maps. It works well on Expo Go and I would like to deploy it to Google Play Store.
According to Expo documentation, I have to:
deploy the app on Google Play Store to generate app signing credential
copy the SHA-1 certificate fingerprint in Google Play console
create an API key in Google Cloud Credential manager
paste the API key in app.json
rebuild the app and re-submit to Google Play Store
So, to my understanding, the app will be available for users without maps activated. Then I'll have to deploy it again with maps activated. It sounds very counter-intuitive, and puts me at risk to get bad reviews from first users, who will claim the app "doesn't work" (because there is no map of course)
Is there a way to immediately publish a working app? If I need to handle a two step process, will the second build be immediately available in the Play Store, or will it be subject to a 3 days review?

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

Google Play Reject: Is there a way to use Firebase Analytics without using background location?

I've uploaded my react-native app to Google Play and it has been rejected due to using background location permission.
The rejection email from Google Play
Google Play won't allow any background location usage without valid proof of using it, which is a thing I cannot even prove.
After drilling it down, I found out that the only entity that's using this permission is Firebase Analytics (I guess it's the Google Play Services plugin).
Does anybody know how to bypass it?
I'm using the most updated react-native & expo versions.
Thank you for your assistance

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.

Requesting permissions on Android wear

I have written an application that takes advantage of system_alert_window on android wear. Since marshmallow this permission is revoked by default. I have enabled this permission on the phone side app from the phone settings. But the permission is still denied on the android wear side app and causes the android wear side app to crash with permission denied exception. Is there a way to enable this permission on Android wear side?
Short answer: keep your watch app on targetSdkVersion 22.
Long answer: this permission doesn't use the usual requestPermissions() flow. There's more info in the docs, but it boils down to a special Settings UI for the user to enable this permission - and it doesn't appear that Google has implemented that UI on Wear. Without it, no (non-system) app can be granted this permission, and any app which tries to use it will crash on an error like the following:
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W#a597673 -- permission denied for this window type
But, this restriction only applies to apps targeting SDK level 23 (and above). So keep your app on 22 for the time being, and hopefully Google will fill this gap before you need to increment it.
UPDATE 22-Dec-2016:
This issue is fixed on Android Wear 2.0. There's still no better solution than the above for Wear 1.x, but Google has implemented the permission UI for Wear 2, and when that's released watch apps should be able to link to it with the standard intent:
startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName())));
You should dynamically request the permissions from user on wearable devices just the same way you do on the phone side. Checkout the official tutorial Requesting Permissions on Android Wear