'Determining if geolocation enabled with react native

Building an app with RN I use the following to receive user's location :

 navigator.geolocation.getCurrentPosition(
  (position) => {
   //do stuff with location
  },
  (error) => {
    //error or locaiton not allowed
  },
  {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);

Which immediately invokes the inquiry for user to accept geolocation permissions. What I'm trying to achieve now is to have an explicit screen before prompting user to click on a button to accept those permissions. In order to get there, I need some way to check if he has accepted those permissions before or not. Caching it in storage would be a bad solution - it might go out of sync if user changes permissions in settings.

How can I check if user has accepted geolocation permissions without triggering the permission alert?



Solution 1:[1]

You can use this library https://github.com/yonahforst/react-native-permissions to check if user has accepted location permission. Like this:

Permissions.getPermissionStatus('location')
  .then(response => {
    this.setState({ locationPermission: response })
  })

Solution 2:[2]

In v2.x.x of react-native-permissions (https://github.com/react-native-community/react-native-permissions)

import { Platform } from "react-native";
import { PERMISSIONS, request } from "react-native-permissions";
import * as Geolocation from "@react-native-community/geolocation";

try {
request(
    Platform.select({
      android: PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION,
      ios: PERMISSIONS.IOS.LOCATION_WHEN_IN_USE
    })
  ).then(res => {
    if (res == "granted") {
      Geolocation.getCurrentPosition( // do location staffs);
      Geolocation.watchPosition( // do watch location staffs );
    } else {
      // console.log("Location is not enabled");
    }
  });
} catch (error) {
  console.log("location set error:", error);
}

Solution 3:[3]

Check this library, this would help you to check location is enabled or not.

https://www.npmjs.com/package/react-native-device-info#isLocationEnabled

Note : Above will not check permission enabled on not. It will just check location truned on or not

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Juan P. Ortiz
Solution 3 abbas.aniefa