react-native-background-geolocation
react-native-background-geolocation copied to clipboard
Financial apps and ACCESS_FINE_LOCATION
So according to new Google guidelines (https://support.google.com/googleplay/android-developer/answer/9876821?hl=en), EWA apps, like ours, are forbidden to have Access_fine_location permission, which has made them first blocking our app in review, and lately they even removed our app from the play store (without any warning). So we had to remove both permissions and hide the feature that uses this lib to have the app approved (still pending so we've been two days without the app on the store). While this process is ongoing, I was trying to do some testing with the app requesting only Access_coarse_location. The app seems to work fine, difference being theres no precise option in Android when the modal shows up, until it eventually always crashes with an ANR.
I'm wondering why the precise location should be a requirement for the lib to work, but its a fact, that if I use the two permissions the app works as usual.
Your Environment
- Plugin version: 4.17.2
- Platform: Android
- OS version: 14 (emulator)
- Device manufacturer / model:
- React Native version (
react-native -v): 0.73.9 - Plugin config
{
url: ****,
headers: {
...getGlobalDefaultHeaders(),
},
geofenceTemplate: ****,
autoSync: true,
geofenceModeHighAccuracy: true, // <-- consumes more power; default is false.
debug: false, // NOTE: if true it will request the notification permissions
logLevel:
__DEV__
? BackgroundGeolocation.LOG_LEVEL_VERBOSE
: BackgroundGeolocation.LOG_LEVEL_OFF,
stopOnTerminate: false,
startOnBoot: true,
desiredAccuracy: BackgroundGeolocation.DESIRED_ACCURACY_HIGH,
disableLocationAuthorizationAlert: true,
locationAuthorizationRequest: 'Always',
disableMotionActivityUpdates: true,
disableProviderChangeRecord: true,
backgroundPermissionRationale: strings.screen.geolocationIntro.androidPermissionsDialog,
params: {
user_id: userId,
device_id: device.deviceId || undefined,
device_name: device.deviceName,
device_os: device.platform,
},
}
Expected Behavior
Actual Behavior
Steps to Reproduce
- Open the app
- Give location permissions
- Wait
Context
Debug logs
Logs
PASTE_YOUR_LOGS_HERE
Hi @christocracy is this behavior expected? We've been unable to use the library in our apps due to the ACCESS_FINE_LOCATION permission requirement. Despite the potential impact on accuracy we would like to experiment using the library without requiring it, is this something that should be possible?
@UnderTheMoonspell
Personal loan apps, apps with the primary purpose of facilitating access to personal loans
Is your app a “personal loan app”?
@christocracy its an EWA app, which is in the same category
What does “EWA” mean?
Early Wage Access
Why do you need powerful background location tracking for that type of app?
Some of our clients require that we offer them a timekeeping feature. So we use this lib to calculate their users' worked hours (we only use the geofence module). The thing is we wanted to try this feature (and its correspondent accuracy) without the ACCESS_FINE_LOCATION, but the app crashes if we explicitly remove it in the manifest file.
Geofencing requires ACCESS_FINE:
https://developer.android.com/develop/sensors-and-location/location/geofencing
Ah ok fair enough. The App in iOS keeps working, but yeah if its in the Android Documentation nothing can be done. Thank you @christocracy
The App in iOS keeps working
ACCESS_FINE is irrelevant to iOS.
iOS geofencing requires “Always” location permission. They will not work with WhenInUse.
This issue is stale because it has been open for 30 days with no activity.
This issue was closed because it has been inactive for 14 days since being marked as stale.