Programing

react native native로 Geolocation 활성화 여부 확인

c10106 2022. 3. 8. 21:50
반응형

react native native로 Geolocation 활성화 여부 확인

RN으로 앱을 구축하여 사용자 위치를 수신할 때 다음을 사용한다.

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

이는 즉시 사용자가 지리 위치 권한을 수락하도록 조회를 불러 일으킨다.내가 지금 달성하고자 하는 것은 사용자가 해당 권한을 수락하기 위해 버튼을 클릭하도록 하기 전에 명시적인 화면을 갖는 것이다.그 곳에 도착하기 위해서는, 나는 그가 그 허가들을 이전에 받아들였는지 아닌지 확인할 방법이 필요하다.이를 스토리지에 캐슁하는 것은 좋지 않은 해결책이 될 수 있다. 사용자가 설정에서 사용 권한을 변경하면 동기화되지 않을 수 있다.

권한 경고를 트리거하지 않고 사용자가 Geolocation 권한을 수락했는지 확인하는 방법

이 라이브러리 https://github.com/yonahforst/react-native-permissions을 사용하여 사용자가 위치 권한을 수락했는지 확인할 수 있다.다음과 같은 경우:

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

react-reason-reason-reason의 v2.x.x에서(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);
}

참조URL: https://stackoverflow.com/questions/38371987/determining-if-geolocation-enabled-with-react-native

반응형