[React Native] react-native-geolocation-service
- react-native-geolocation-service
- μ μ΄κ²μ μ¬μ©νλμ?
- μ€μΉ
- νΈνμ±
- μ€μ
- μ¬μ© λ°©λ²
- API
- μ€λ₯ μ½λ
- FAQ
react-native-geolocation-service
iOS λ° μλλ‘μ΄λμ© λ¦¬μ‘νΈ λ€μ΄ν°λΈ μμΉ μλΉμ€μ λλ€.
μ μ΄κ²μ μ¬μ©νλμ?
μ΄ λΌμ΄λΈλ¬λ¦¬λ react-nativeμ νμ¬ κ΅¬νμΈ Geolocation APIμ μλλ‘μ΄λ μμΉ νμμμ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ§λ€μ΄μ‘μ΅λλ€. Googleμ μλλ‘μ΄λμ κΈ°λ³Έ νλ μμν¬ μμΉ APIλ³΄λ€ κ°λ ₯νκ² κΆμ₯νλ Google Play Serviceμ μλ‘μ΄ βFusedLocationProviderClientβ APIλ₯Ό μ¬μ©νμ¬ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €κ³ λ Έλ ₯ν©λλ€. μ΄λ μμ² κ΅¬μ±μ λ°λΌ μλμΌλ‘ μ¬μ©ν μμΉ νλ‘λ°μ΄λλ₯Ό κ²°μ νκ³ μμ² κ΅¬μ±μ μΆ©μ‘±μν€μ§ λͺ»νλ©΄ μμΉ λͺ¨λλ₯Ό λ³κ²½νλλ‘ μλ΄ν©λλ€.
μ°Έκ³ : λ§μ μλλ‘μ΄λ κΈ°κΈ°μμ νλμ¨μ΄/μμ€ν μμ€μμ GPS λ¬Έμ κ° μκΈ° λλ¬Έμ μμΉ μμ²μ΄ μ¬μ ν νμμμ λ μ μμ΅λλ€. μμΈν λ΄μ©μ FAQλ₯Ό μ°Έμ‘°νμμμ€.
μ€μΉ
yarn
yarn add react-native-geolocation-service
npm
npm install react-native-geolocation-service
νΈνμ±
RN λ²μ | ν¨ν€μ§ λ²μ |
---|---|
>=0.60 | >=3.0.0 |
<0.60 | 2.0.0 |
<0.57 | 1.1.0 |
μ€μ
- docs/setup.md μ°Έμ‘°
- μμ νλ‘μ νΈ νμΈ
μ¬μ© λ°©λ²
μ΄ λΌμ΄λΈλ¬λ¦¬λ RNμ Geolocation APIλ₯Ό λ체νκΈ° μν΄ λ§λ€μ΄μ‘μΌλ―λ‘ μ¬μ©λ²μ λ§€μ° κ°λ¨ν©λλ€. κ·Έλ¬λ μΆκ°μ μΈ μ€λ₯ μν©λ μ²λ¦¬ν΄μΌν©λλ€.
μλλ‘μ΄λμ κ²½μ°μ΄ λΌμ΄λΈλ¬λ¦¬λ μμΉ κΆνμ΄ μ΄λ―Έ μ¬μ©μμ μν΄ λΆμ¬λμλ€κ³ κ°μ νλ―λ‘ μμΉ μμ² μ μ PermissionsAndroidλ₯Ό μ¬μ©νμ¬ κΆνμ μμ²ν΄μΌν©λλ€.
...
import Geolocation from 'react-native-geolocation-service';
...
componentDidMount() {
if (hasLocationPermission) {
Geolocation.getCurrentPosition(
(position) => {
console.log(position);
},
(error) => {
// See error code charts below.
console.log(error.code, error.message);
},
{ enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 }
);
}
}
API
async requestAuthorization(authorizationLevel) (iOS only)
authorizationLevel λ§€κ° λ³μμ λ°λΌ μμΉ κΆνμ μμ²ν©λλ€. βwhenInUseβ λλ βalwaysβ μ€ νλ μΌ μ μμ΅λλ€. μ€μ μ€ plist ν€λ₯Ό ꡬμ±ν΄μΌν©λλ€.
Promiseκ° ν΄κ²°λλ©΄ κΆν μνλ₯Ό λ°νν©λλ€.
disabled
- μμΉ μλΉμ€κ° λΉνμ±νλ¨granted
- κΆνμ΄ λΆμ¬ λ¨denied
- κΆνμ΄ κ±°λΆ λ¨restricted
- κΆνμ΄ μ ν λ¨
getCurrentPosition(successCallback, ?errorCallback, ?options)
- successCallback: μ΅μ μμΉ μ 보μ ν¨κ» νΈμΆλ©λλ€.
- errorCallback: μ€λ₯κ° λ°μ ν λλ§λ€ νΈμΆλ©λλ€.
- options: | μ΄λ¦ | μ ν | κΈ°λ³Έκ° | μ€λͺ
| | βββββββ | ββ | ββ | ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ- | | timeout | ms | 무νλ | μμ² μκ° μ΄κ³Ό | | maximumAge | ms | 무νλ | μ΄μ μμΉκ° μΊμ λ κΈ°κ° | | accuracy | object | β | {
Β Β Β android: notion://www.notion.so/docs/accuracy.md#android,
Β Β Β ios: notion://www.notion.so/docs/accuracy.md#ios
}
μ 곡λμ§ μκ±°λ μλͺ»λ κ°μΌλ‘ μ 곡λλ©΄ enableHighAccuracyλ₯Ό λμ μ¬μ©ν©λλ€. | | enableHighAccuracy | bool | false | κ³ μ λ° λͺ¨λ μ¬μ© | | distanceFilter | m | 100 | μ΅μ μ΄λ 거리 (λ―Έν°) | | showLocationDialog | bool | true | μμΉλ₯Ό νμ±ν ν κ²μΈμ§ 묻λμ§ μ¬λΆ (μλλ‘μ΄λ μ μ©) | | forceRequestLocation | bool | false | μ νλ ν₯μ λν μμλ₯Ό κ±°λΆ ν νμλ μμΉ μμ²μ κ°μ λ‘ μνν©λλ€ (μλλ‘μ΄λ μ μ©) | | forceLocationManager | bool | false | trueλ‘ μ€μ νλ©΄ μλλ‘μ΄λμ κΈ°λ³Έ LocationManager APIλ₯Ό μ¬μ©ν©λλ€ (μλλ‘μ΄λ μ μ©) |
watchPosition(successCallback, ?errorCallback, ?options)
- successCallback: μ΅μ μμΉ μ 보μ ν¨κ» νΈμΆλ©λλ€.
- errorCallback: μ€λ₯κ° λ°μ ν λλ§λ€ νΈμΆλ©λλ€.
- options: | μ΄λ¦ | μ ν | κΈ°λ³Έκ° | μ€λͺ
| | βββββββββββ | ββ | ββ | ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ- | | accuracy | object | β | {
Β Β Β android: notion://www.notion.so/docs/accuracy.md#android,
Β Β Β ios: notion://www.notion.so/docs/accuracy.md#ios
}
μ 곡λμ§ μκ±°λ μλͺ»λ κ°μΌλ‘ μ 곡λλ©΄ enableHighAccuracyλ₯Ό λμ μ¬μ©ν©λλ€. | | enableHighAccuracy | bool | false | κ³ μ λ° λͺ¨λ μ¬μ© | | distanceFilter | m | 100 | μμΉ μ λ°μ΄νΈ κ° μ΅μ μ΄λ 거리 (λ―Έν°) | | interval | ms | 10000 | νμ± μμΉ μ λ°μ΄νΈ κ°κ²© (μλλ‘μ΄λ μ μ©) | | fastestInterval | ms | 5000 | μ΅λ λΉλμ¨, λͺ κ°μ§ κ²½μ°μλ κ°κ²©λ³΄λ€ λΉ λ₯΄κ² μμΉ μ λ°μ΄νΈλ₯Ό λ°μ μ μμ΅λλ€ (μ : λ€λ₯Έ μ ν리μΌμ΄μ μ΄ μμΉ μ λ°μ΄νΈλ₯Ό νΈλ¦¬κ±°νλ κ²½μ°) (μλλ‘μ΄λ μ μ©) | | showLocationDialog | bool | true | μμΉλ₯Ό νμ±ν ν κ²μΈμ§ 묻λμ§ μ¬λΆ (μλλ‘μ΄λ μ μ©) | | forceRequestLocation | bool | false | μ νλ ν₯μ λν μμλ₯Ό κ±°λΆ ν νμλ μμΉ μμ²μ κ°μ λ‘ μνν©λλ€ (μλλ‘μ΄λ μ μ©) | | forceLocationManager | bool | false | trueλ‘ μ€μ νλ©΄ μλλ‘μ΄λμ κΈ°λ³Έ LocationManager APIλ₯Ό μ¬μ©ν©λλ€ (μλλ‘μ΄λ μ μ©) | | useSignificantChanges | bool | false | λ°°ν°λ¦¬ ν¨μ¨μ μΈ λ€μ΄ν°λΈ μ€μν λ³κ²½ APIλ₯Ό μ¬μ©νμ¬ μμΉλ₯Ό λ°νν©λλ€. μ₯μΉκ° μ€μν κ±°λ¦¬κ° μ΄κ³Όλμμμ κ°μ§ ν λλ§ μμΉκ° λ°νλ©λλ€ (iOS μ μ©) | | showsBackgroundLocationIndicator | bool | false | μ΄ μ€μ μ iOSμ μν νμ μ€μ νλμ λ§λ λλ λΈλ£¨νμ νμ±νν©λλ€. μ±μ΄ λ°±κ·ΈλΌμ΄λλ‘ μ΄λνλ©΄μ΄ μμ±μ μ¬μ©νμ¬ μμΉ μλΉμ€κ° μ¬μ© μ€μμ λνλ΄λλ‘ μν νμ μ€ λͺ¨μμ λ³κ²½ν©λλ€. μ¬μ©μλ νμκΈ°λ₯Ό ννμ¬ μ±μΌλ‘ λμκ° μ μμ΅λλ€. (iOS μ μ©) |
clearWatch(watchId)
- watchId (
watchPosition
μμ λ°ν λ ID)
stopObserving()
κΈ°κΈ° μμΉ λ³κ²½ κ΄μ°°μ μ€μ§ν©λλ€. λν μ΄μ μ λ±λ‘λ λͺ¨λ 리μ€λλ₯Ό μ κ±°ν©λλ€.
μ€λ₯ μ½λ
μ΄λ¦ | μ½λ | μ€λͺ |
---|---|---|
PERMISSION_DENIED | 1 | μμΉ κΆνμ΄ λΆμ¬λμ§ μμ |
POSITION_UNAVAILABLE | 2 | μμΉ μ 곡μλ₯Ό μ¬μ©ν μ μμ |
TIMEOUT | 3 | μμΉ μμ²μ΄ μκ° μ΄κ³Όλ¨ |
PLAY_SERVICE_NOT_AVAILABLE | 4 | Google Play μλΉμ€κ° μ€μΉλμ΄ μμ§ μκ±°λ μ΄μ λ²μ μ λλ€ (μλλ‘μ΄λ μ μ©) |
SETTINGS_NOT_SATISFIED | 5 | μμΉ μλΉμ€κ° νμ±νλμ΄ μμ§ μκ±°λ μμΉ λͺ¨λκ° νμ¬ μμ²μ μ ν©νμ§ μμ΅λλ€ (μλλ‘μ΄λ μ μ©) |
INTERNAL_ERROR | -1 | λΌμ΄λΈλ¬λ¦¬κ° μ΄λ€ μ΄μ λ‘ μΆ©λνκ±°λ getCurrentActivity ()κ° nullμ λ°ννμ΅λλ€ (μλλ‘μ΄λ μ μ©) |
FAQ
μμΉ νμμμμ΄ μ¬μ ν λ°μν©λκΉ?
λ€μ λ¨κ³λ₯Ό μλν΄λ³΄μμμ€: (μ¬κΈ°μμ κ°μ Έμ΄)
- μ νλ₯Ό κ»λ€ μΌμμμ€.
- GPSλ₯Ό λκ³ μΌμμμ€.
- μ μ μ μ½ λͺ¨λ, λ°°ν°λ¦¬ κ΄λ¦¬ λλ μ 3μ μ±μ λΉλ‘―ν λͺ¨λ λ°°ν°λ¦¬ μ μ½ μ€μ μ λΉνμ±ννμμμ€.
- βAGPS μ¬μ€μ βμ μννμμμ€. App GPS Status & Toolboxλ₯Ό μ€μΉ ν λ€μ ν΄λΉ μ±μΌλ‘ μ΄λνμ¬ λ©λ΄> λꡬ> A-GPS μν κ΄λ¦¬> μ¬μ€μ
λ€λ₯Έ κΈ°κΈ°μμ λ°°ν°λ¦¬ μ μ½ μ€μ μ‘°μ :
- HTC: μ ν μ€μ > λ°°ν°λ¦¬> μ μ μ μ½ λͺ¨λ> λ°°ν°λ¦¬ μ΅μ ν> μ± μ ν> μ΅μ ννμ§ λ§μμμ€> μ μ₯
- Huawei: Energy Settingsλ₯Ό Normalλ‘ λ³κ²½νκ³ μ±μ βλ³΄νΈ λ μ±βμ μΆκ°νμμμ€.
- LG Android 6 μ΄μμ μ€ννλ κ²½μ°: μ€μ > λ°°ν°λ¦¬ λ° μ μ μ μ½> λ°°ν°λ¦¬ μ¬μ©λ> μ΅μ ννμ§ μμ> λͺ¨λ μ±> μ± μ ν> μ΅μ ννμ§ λ§μμμ€.
- λͺ¨ν λ‘λΌ Android 6 μ΄μμ μ€ννλ κ²½μ°: λ°°ν°λ¦¬> μ€λ₯Έμͺ½ μλ¨ λͺ¨μ리 λ©λ΄ μ ν> λ°°ν°λ¦¬ μ΅μ ν> μ΅μ ννμ§ μμ> λͺ¨λ μ±> μ± μ ν> μ΅μ ννμ§ λ§μμμ€.
- OnePlus (OxygenOS μ€μ μ¬μ©) : λ°°ν°λ¦¬> λ°°ν°λ¦¬ μ΅μ ν> βλͺ¨λ μ±βμΌλ‘ μ ν> μ± μ ν> μ΅μ ννμ§ λ§μμμ€.
- μΌμ±: λ°°ν°λ¦¬ μ€μ μ μ‘μΈμ€> μ± μ μ μ μ½> μΈλΆ μ 보> μ± μ ν> μ¬μ© μ ν¨
- μλ Android 6 μ΄μμ μ€ννλ κ²½μ°: λ°°ν°λ¦¬> μ€λ₯Έμͺ½ μλ¨ λͺ¨μ리μμ λ©λ΄> λ°°ν°λ¦¬ μ΅μ ν> μ±> μ± μ ν
- Xiaomi (MIUI OS) Android 6 μ΄μμ μ€ννλ κ²½μ°: μ ν μ€μ > κΈ°ν μ€μ > λ°°ν°λ¦¬ λ° μ±λ₯> λ°°ν°λ¦¬ μ¬μ© κ΄λ¦¬> μ±> μ± μ ν