ํต์ฌ ๊ธฐ๋ฅ ๊ตฌํ
"์น์ดํ ํ๋ฃจ"์ ํต์ฌ ๊ธฐ๋ฅ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ ๋์๋๋ GPS ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ฌ๋ฌ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์กฐ์ฌํ๋ค. iOS๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ ์ฑ
์ด ๊ต์ฅํ ์๊ฒฉํด์ ๋๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฑ์ ์ข
๋ฃํ๋ฉด GPS ์๋น์ค๋ฅผ ์ ๊ณตํด์ฃผ์ง ๋ชปํ๋ค. ๊ทธ๋ฌ๋ค react-native-background-geolocation์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ iOS์์๋ ์ฑ์ด ์ข
๋ฃ๋์ด๋ GPS ์๋น์ค๋ฅผ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ ์ฐพ์ ์ ์์๋ค. ๋ฐ๋ผ์, ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํ๋ค. ์์ธํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ API Documentation์ ์์ผ๋ ์ฌ์ฉํ๊ณ ์ถ์ ์ฌ๋์ ์ฐธ๊ณ ํด์ ์ฌ์ฉํ๋ฉด ๋๊ฒ ๋ค.(Android๋ ์ ๋ฃ์ด๋ ์ฃผ์โ ๏ธ)
Geofence
ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ํฌ๊ฒ ๋ ๊ฐ์ง์ ์์น ๊ธฐ๋ฐ API๋ฅผ ์ ๊ณตํด์ค๋ค.
์ฒซ ๋ฒ์งธ ๋ด๋น๊ฒ์ด์ ์ฒ๋ผ ์ฌ์ฉ์์ ์์น๋ฅผ ๊ณ์ ํธ๋ํน ํ๋ Location-tracking API์ด๋ค. ์ด API๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฑ์ ์ข ๋ฃํด๋ ๋ฉ์ถ์ง ์๊ณ ํ๋ฃจ ์ข ์ผ ํธ๋ํน ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐํฐ๋ฆฌ ์๋ชจ๊ฐ ์์ฒญ๋ ๊ฒ์ด ๋ถ๋ช ํ๋ค.
๋ ๋ฒ์งธ๋ Geofencing API์ด๋ค. Geofence๋ ์ง๋ฆฌ(Geography)์ ์ธํ๋ฆฌ(Fence)๋ฅผ ๊ฒฐํฉํ ๋จ์ด๋ก, ์ค์ ์์น์ ๊ธฐ๋ฐํ์ฌ ๊ฐ์์ ๊ฒฝ๊ณ๋ ๊ตฌ์ญ์ ๋ง๋๋ ๊ธฐ์ ์ด๋ค.
์ ๊ทธ๋ฆผ์ฒ๋ผ ํด๋น ์์น ๋ฐ๊ฒฝ์ ์ถ์
์ ๊ฐ์งํ๊ณ ๊ทธ์ ๋ฐ๋ฅธ ๋์์ ํ ์ ์๋ ์๋น์ค์ธ ๊ฒ์ด๋ค. ์ด ์๋น์ค๋ ์ง์ ํ ์์น ๋ฐ๊ฒฝ์ ๋ค์ด์ค๋์ง ์ ๋ค์ด์ค๋์ง๋ง ํ๋จํ๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ์ ์ ์์ ๋ฐฐํฐ๋ฆฌ๊ฐ ์๋ชจ๋๊ธฐ์ Geofencing API๋ฅผ ์ฑํํ๋ค. ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ Geofence์ ENTER, DWELL, EXIT์ ์ํฉ์ ๋ํ ์ฝ๋ฐฑ ํจ์์ธ onGeofence๋ฅผ ์ ๊ณตํด์ค๋ค.
๊ฐ๋ฐ ์ด์ ๋ฐ ํด๊ฒฐ ๋ฐฉ์
๐จ ๊ฐ ์ค์ผ์ค๋ค์ Geofence ๋ชจ๋ํฐ๋ง์ ์ด๋ป๊ฒ ์ ์ฉํด์ผ ํ๋๊ฐ
๋ฌธ์ ์ํฉ
์ค์ผ์ค๋ค์ ์์ฑํ๋ ์๊ฐ๋ถํฐ ๊ฐ๊ฐ์ Geofence๋ฅผ ์์ฑํด์ ๋ชจ๋ํฐ๋งํ ์๋ ์์๋ค. ์๋ํ๋ฉด ์ค์ผ์ค์ ๋ง์ด ์์ฑํ๋ ๊ฒฝ์ฐ์ ๊ฐ ์ค์ผ์ค๋ค์ ์์ฑ ์๊ฐ๊ณผ ์์ ์๊ฐ์ ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ํฉ์ณ์ง๋ฉด ๋ฐฐํฐ๋ฆฌ ์๋ชจ ๊ด์ ์์ ์ต์
์ ํจ์จ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ด๋ค.
ํด๊ฒฐ ๊ณผ์
ํ ๋ฒ์ ํ๋์ Geofence๋ง ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํด "geofenceDataArray" ๋ฐฐ์ด์ ์์ฑํ์ฌ ํ์ฌ ์ธ๋ฑ์ค์ ์ค์ผ์ค์ ๋ชจ๋ํฐ๋งํ๊ณ ์๋ Geofence๊ฐ ENTER๋ฅผ ๊ฐ์งํ๋ฉด ๋ค์ ์ธ๋ฑ์ค์ ์ค์ผ์ค๋ก Geofence๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ์๋ค.
๐จ ์ค์ผ์ค ์์ ์๊ฐ ์ด์ ์ ENTER ๋ ๊ฒฝ์ฐ
๋ฌธ์ ์ํฉ
์ค์ผ์ค ์์ ์๊ฐ ์ดํ์ Geofence์ ENTER๊ฐ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ผ์ ์ฒ๋ฆฌํ๊ฒ ๋ง๋ค์๋ค.
- ๋์ฐฉํ๋ค๋ ํธ์ ์๋ฆผ ๋์ฐ๊ธฐ
- ์ค์ผ์ค ์๋ฃ ์ฒดํฌ ํ์๋ฅผ ํ์ ํ ์ด๋ธ์ ๋์ฐ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ๋ค์ ์ค์ผ์ค ์ฅ์๋ก Geofence๋ฅผ ๋๊ฒจ์ฃผ๊ธฐ
ํ์ง๋ง, ์ฌ์ฉ์๊ฐ ์ค์ผ์ค ์์ ์๊ฐ ์ด์ ์ ENTER ๋ ๊ฒฝ์ฐ์๋ ์์ ๋์์ ๊ทธ๋๋ก ์ํํ๋ฉด ์ ๋๋ค.
์ด ์ํฉ์์ ๋ฒ์ด์ง ์ ์๋ ๊ฒฝ์ฐ์ ์๋ 3๊ฐ์ง์ด๋ค.
- ์ค์ผ์ค ์์ ์๊ฐ ์ดํ๊น์ง Geofence๋ฅผ ์ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ
- ์ค์ผ์ค ์์ ์๊ฐ ์ด์ ์ Geofence๋ฅผ ๋ฒ์ด๋์ ์ค์ผ์ค ์์ ์๊ฐ ์ดํ์ ๋ค์ Geofence์ ๋ค์ด์ค๋ ๊ฒฝ์ฐ
- ์ค์ผ์ค ์์ ์๊ฐ ์ด์ ์ Geofence๋ฅผ ๋ฒ์ด๋์ ์ค์ผ์ค ์์ ์๊ฐ ์ดํ์ Geofence์ ๋ค์ด์ค์ง ์๋ ๊ฒฝ์ฐ
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ธ ๋ฒ์งธ ๊ฒฝ์ฐ์ด๋ค. ์ค์ผ์ค ์ฅ์์ ์ค์ง๋ ์์๋๋ฐ ๋์ฐฉ ์๋ฆผ์ด ์ค๊ณ ํ์ ํ
์ด๋ธ์ ์ค์ผ์ค ์๋ฃ ์ฒดํฌ ํ์๊ฐ ๋จ๋ ๊ฑด ๋ง์ด ์ ๋๋ค.
ํด๊ฒฐ ๊ณผ์
์ด๋ฌํ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ EXIT์ ํ์ฉํด์ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํ๋ค.
์ผ์ฐ ENTER
- ์ค์ผ์ค ์์ ์๊ฐ์ ๋์ฐฉ ์๋ฆผ์ด ์ฌ ์ ์๊ฒ ํธ์ ์๋ฆผ ์์ฝํ๊ธฐ
- ์ฒดํฌ ํ์๋ฅผ ์ํ ๋ด๋ถ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
=> ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ํด๋์ง๋ง ์ค์ผ์ค ์์ ์๊ฐ ์ดํ์๋ง ์ฒดํฌ ํ์๋ฅผ ๋์ฐ๊ฒ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์๊ฒ๋ ์ฒดํฌ ํ์๊ฐ ๋จ์ง ์์
- Geofence๋ฅผ ๋ค์ ์ค์ผ์ค ์ฅ์๋ก ๋๊ธฐ์ง ์์
์ค์ผ์ค ์์ ์๊ฐ๋ณด๋ค ์ด์ EXIT
- ์์ฝํ ์๋ฆผ ์ทจ์ํ๊ธฐ
- ์ฒดํฌ ํ์๋ฅผ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ทจ์
- ๋ค์ Geofence์ ๋ค์ด์ค๋ ๊ฒฝ์ฐ๋ฅผ ์ํด Geofence๋ฅผ ๋ค์ ์ค์ผ์ค ์ฅ์๋ก ๋๊ธฐ์ง ์์
์ค์ผ์ค ์์ ์๊ฐ ์ดํ EXIT
- Geofence๋ฅผ ๋ค์ ์ค์ผ์ค ์ฅ์๋ก ๋๊น
๐จ Geofence์ ์ต์ ๋ฐ๊ฒฝ์ด 200m์ธ ์
๋ฌธ์ ์ํฉ
์ด ์ด์๋ Geofencing ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ ๋ ๊ฐ์ฅ ํฌ๋ฆฌํฐ์ปฌ ํ ์ด์์๋ค. API Documentation์ ๋ฐ๋ฅด๋ฉด Geofence๊ฐ ์ ํํ๊ฒ ๋ชจ๋ํฐ๋งํ ์ ์๋ ์ต์ ๋ฐ๊ฒฝ์ 200m๋ผ๊ณ ํ๋ค.
์ผ์ฐ ENTER ๋ ๊ฒฝ์ฐ ๋ค์ ์ค์ผ์ค ์ฅ์๋ก Geofence๋ฅผ ๋๊ธฐ์ง ์๊ณ ์ค์ผ์ค ์์ ์๊ฐ ์ดํ์ EXIT ๋๋ฉด ๋ค์ ์ผ์ ์ผ๋ก Geofence๋ฅผ ๋๊ธด๋ค. ๋ง์ฝ ๋ค์ ์ค์ผ์ค ์ฅ์๊ฐ ํ์ฌ Geofence์ 200m ๋ฒ์ ์์ ์ฅ์๋ผ๋ฉด EXIT ๋์ง ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ ๊ณผ์
๋ฉ์ธ ์์ด๋์ด๋ ๊ฒฐ๊ตญ 200m ๋ฒ์ ์์ ๋ค์ ์ค์ผ์ค ์ฅ์๋ค์ ๋ชจ๋ ํ์ฌ ์ผ์ ์ ๋ชจ๋ํฐ๋งํ๊ณ ์๋ Geofence์์ ํฌํจ๋๋ค๋ ์ฌ์ค์ด์๋ค. ๋ฐ๋ผ์, ํ์ฌ ์ผ์ ์ Geofence์ ์ผ์ฐ ENTER ์ฒ๋ฆฌ๋ฅผ 200m ๋ฒ์ ์์ ์ผ์ ์ฅ์๋ค๊ณผ ํ๊บผ๋ฒ์ ๋ฌถ์ด์ ์ฒ๋ฆฌํ์๋ค.
์ผ์ฐ ENTER
- ํ์ฌ ๋ชจ๋ํฐ๋ง๋๊ณ ์๋ Geofence ๋ด์ ์๋ ๋ค์ ์ค์ผ์ค ์ฅ์๋ค์ ์ฐพ๋๋ค.
=> 200m ๋ด์ ์๋ ์ค์ผ์ค๋ค์ nearBySchedule์ด๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด๋ก ๊ด๋ฆฌํ๋ค.
- nearBySchedule์ ๊ฐ ์ค์ผ์ค๋ค์ ์์ ์๊ฐ์ ๋์ฐฉ ์๋ฆผ์ด ์ฌ ์ ์๊ฒ ํธ์ ์๋ฆผ์ ์์ฝํ๋ค.
- ์ฒดํฌ ํ์๋ฅผ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- Geofence๋ฅผ ์์ง ๋๊ธฐ์ง ์์
* ์๋ ๊ฒฝ๋๋ก ๊ฐ ์ฅ์๋ค์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ ๋๋ "ํ๋ฒ์ฌ์ธ"์ด๋ผ๋ ๊ณต์์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค. ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ harversine-distance์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์์๋ค.
EXIT
- EXIT ์๊ฐ์ nearBySchedule์ ๊ฐ ์ค์ผ์ค๋ค์ ์์ ์๊ฐ๊ณผ ๋น๊ตํ๋ค.
- EXIT ์๊ฐ์ด nearBySchedule์ ๋ชจ๋ ์ค์ผ์ค๋ค์ ์์ ์๊ฐ ์ดํ๋ผ๋ฉด
=> ๋ง์ง๋ง ์ค์ผ์ค์ ๋ค์ ์ค์ผ์ค๋ก Geofence๋ฅผ ๋๊ธด๋ค.
- nearBySchedule์ ์ค์ผ์ค ์ค EXIT ์๊ฐ์ด ์์ ์๊ฐ๋ณด๋ค ๋ ์ด์ ์ธ ์ค์ผ์ค์ด ์กด์ฌํ๋ค๋ฉด
=> ํด๋น ์ค์ผ์ค๋ถํฐ ๋จ์ ์ค์ผ์ค๋ค์ ์์ฝ๋ ํธ์ ์๋ฆผ๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ทจ์์ํค๊ณ ํด๋น ์ค์ผ์ค ์ฅ์๋ก Geofence๋ฅผ ๋๊ธด๋ค.
๐จ ์ผ์ ์๊ฐ ๋ด Geofence์ ๋ค์ด์ค์ง ์๋ ๊ฒฝ์ฐ
๋ฌธ์ ์ํฉ
์ฌ์ฉ์๊ฐ ์์ Geofence์ ๋ค์ด์ค์ง ์์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์๊ฐ ํฌ๊ทธ๋ผ์ด๋๋ก ์ค์ง ์๋ ํ ์ฒ๋ฆฌํด์ค ์ ์๋ ๊ฒ ์๋ฌด๊ฒ๋ ์์๋ค. ์๋ํ๋ฉด, Geofence์ ENTER๋ EXIT์ด ์ธ์๋์ด์ผ์ง๋ง ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ์ ๋ค์ด์ค์ง ์์ผ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋ ๋์์ ์ผ์ด๋ ์ ์์๋ค.
์ฐจ์ ์ฑ
์ฌ์ฉ์๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฌ๊ทธ๋ผ์ด๋๋ก ์ ๋ํ๋ ๋ฐฉ์์ ์ ํํ์๋ค. ์ ๋ ๋ฐฉ์์ ๋จผ์ ์ค์ผ์ค ์๊ฐ ๋ด ํด๋น ์ฅ์์ ์ค์ง ์์์ผ๋ ์ฑ ๋ด์์ ์ด๋ค ํ๋์ ํ๋ผ๋ ํธ์ ์๋ฆผ์ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ์ ํ๋ค. ์ด๋ฌํ ํธ์ ์๋ฆผ์ failNotification์ด๋ผ๊ณ ์ด๋ฆ ์ง์๋ค.
failNotification์ ์ด๋ป๊ฒ ์์ฝํ๊ณ ์ทจ์ํ ์ง๋ ์ฝ๊ฐ์ ์ด์์๋ค. ๋ค์์ failNotification ์ฒ๋ฆฌ ์ด์์ ํด๊ฒฐ ๋ฐฉ์์ด๋ค.
- ์ค์ผ์ค์ ์์ฑํจ๊ณผ ๋์์ ์ค์ผ์ค ์ข ๋ฃ ์๊ฐ์ failNotification์ด ์ฌ ์ ์๊ฒ ํธ์ ์๋ฆผ์ ์์ฝํ๋ค.
- ์ค์ผ์ค ์ค Geofence์ ENTER ๋ ์ค์ผ์ค์ ์์ฝ๋ failNotification์ ์ทจ์ํ๋ค.
- ์ผ์ฐ ENTER๋ ์ค์ผ์ค๋ค ์ค ๊ฐ ์ค์ผ์ค๋ค์ ์์ ์๊ฐ ์ด์ ์ EXIT์ด ๋๋ฉด failNotification์ ๋ค์ ๋ ์๊ฐ์ ์์ฝํ๋ค.
์ดํ์๋ ์ฌ์ฉ์๊ฐ ํฌ๊ทธ๋ผ์ด๋์ ์์ ๋ ๋ค์ ์ค์ผ์ค๋ก Geofence๋ฅผ ๋๊ธธ ์ ์๋ ์์ฐ์ค๋ฌ์ด ํ์๋ฅผ ๊ณ ๋ฏผํ๋ค. ๊ณ ๋ฏผ ๋์ ๊ฒฐ๊ตญ [์คํต ๋ฒํผ]์ด๋ผ๋ ๋ฒํผ์ ๋ง๋ค์ด ์ฌ์ฉ์๊ฐ ์ง์ ๋ค์ ์ค์ผ์ค๋ก ์คํตํ ์ ์๊ฒ ๋ง๋ค์๋ค.
์ต์ข ๋ชฉํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์์ ์์ ์๋ํ์์ง๋ง, ์ฌ์ฉ์๊ฐ ํฌ๊ทธ๋ผ์ด๋์์ ํน์ ํ์๋ฅผ ํ๋๋ก ๊ฐ์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ง๋ฌด๋ฆฌ ๋์ด์ ๋ง์ด ์์ฌ์ ๋ค.
'๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ > React Native' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React Native] - "์น์ดํ ํ๋ฃจ" ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ #2 (0) | 2021.12.16 |
---|---|
[React Native] - "์น์ดํ ํ๋ฃจ" ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ #1 (0) | 2021.12.16 |
๋๊ธ