Flutter-geolocator: IOS ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์œ„์น˜๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 06์›” 04์ผ  ยท  12์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Baseflow/flutter-geolocator

๐Ÿ› ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์œ„์น˜๋ฅผ ์ธ์‡„ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
Geolocator geo = Geolocator ();
์œ„์น˜ pos =
await geo.getCurrentPosition (desiredAccuracy : LocationAccuracy.high);
print (pos);

๋ณต์ œ ๋‹จ๊ณ„

Android ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์œ„์น˜์—์„œ ์ž‘๋™ํ•˜๋ฉฐ ์ฝ˜์†”์— ์ธ์‡„๋ฉ๋‹ˆ๋‹ค.
iOS ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์•„๋ฌด๊ฒƒ๋„ ์ธ์‡„๋˜์ง€ ์•Š์œผ๋ฉฐ print (pos) ๋’ค์— ๋‹ค๋ฅธ print ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ธ์‡„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์œ„์น˜๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜์›ํžˆ "๊ธฐ๋‹ค๋ฆฐ๋‹ค"๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ตฌ์„ฑ

Android Studio์˜ iPhone 11 ์—๋ฎฌ๋ ˆ์ดํ„ฐ

๋ฒ„์ „ : 1.x

ํ”Œ๋žซํผ:
: iphone : iOS

ios in progress bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@LarryJing ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ–ˆ์Šต๋‹ˆ๊นŒ? iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ "๊ธฐ๋Šฅ"-> "์œ„์น˜"๋ฉ”๋‰ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Screenshot 2020-06-04 at 13 21 49

๋ชจ๋“  12 ๋Œ“๊ธ€

@LarryJing ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ–ˆ์Šต๋‹ˆ๊นŒ? iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ "๊ธฐ๋Šฅ"-> "์œ„์น˜"๋ฉ”๋‰ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Screenshot 2020-06-04 at 13 21 49

์˜ˆ, ios ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์—์ด ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
Screenshot 2020-06-04 at 6 42 49 PM

์˜ˆ, ios ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์—์ด ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
Screenshot 2020-06-04 at 6 42 49 PM

๋‚˜๋„ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

```ํ”Œ๋Ÿฌํ„ฐ ๋‹ฅํ„ฐ
[โœ“] Flutter (์ฑ„๋„ ์•ˆ์ •, v1.17.2, Mac OS X 10.15.4 19E287, locale en-JP)

[โœ“] Android ํˆด์ฒด์ธ-Android ๊ธฐ๊ธฐ ์šฉ ๊ฐœ๋ฐœ (Android SDK ๋ฒ„์ „ 29.0.3)

[โœ“] Xcode-iOS ๋ฐ macOS ์šฉ ๊ฐœ๋ฐœ (Xcode 11.5)
[โœ“] Android Studio (๋ฒ„์ „ 4.0)
[!] IntelliJ IDEA Ultimate Edition (๋ฒ„์ „ 2018.2.2)
โœ— Flutter ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Flutter ํŠน์ • ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
โœ— Dart ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Dart ํŠน์ • ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
[โœ“] VS Code (๋ฒ„์ „ 1.45.1)
[โœ“] ์—ฐ๊ฒฐ๋œ ์žฅ์น˜ (1 ๊ฐœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
```

๋ฒ„์ „ : geolocator: 5.3.2

์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ : iPhone 11 / Software Version 13.5

๋ชจ๋“ˆ ๋ฒ„์ „์ด 5.3.1 ๋ณ€๊ฒฝ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Screenshot 2020-06-04 at 8 15 06 PM
์œ„์น˜ ์—…๋ฐ์ดํŠธ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•˜๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์— ๋ถ€๋”ช ์น˜๊ณ ์žˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์œ„์น˜๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ์ „๊ฒฝ ๋งŒ ์š”์ฒญํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐฐ๊ฒฝ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™” ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์‹ค์ˆ˜๋กœ ๊ฒŒ์‹œ ๋œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ / ๋‚ด์ผ ๋‚˜์ค‘์— ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ 5.3.1์„ ๊ณ ์ˆ˜ํ•˜์‹ญ์‹œ์˜ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” ํ•ซํ”ฝ์Šค (๋ฒ„์ „ 5.3.2 + 1)๋ฅผ ๋ฐฉ๊ธˆ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. Backgroup ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค EnableBackgroundLocationUpdates ์—์„œ ํ‚ค๋ฅผ ๋‹น์‹ ์˜ Info.plist (๋˜ํ•œ ์ฐธ์กฐ README.md ์•„์ดํฐ OS ์„น์…˜ ์ฐธ์กฐ).

๋””๋ฒ„๊ทธ๋ฅผ ๋„์™€ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

์ˆ˜์ •์„ ํ™•์ธํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ข…๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” ์—ฌ๊ธฐ์—์„œ ํ”Œ๋Ÿฌํ„ฐ์™€ ํ•จ๊ป˜ ์œ„์น˜ ์ •๋ณด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กญ๊ณ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ข‹์•„ ๋ณด์ด์ง€๋งŒ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ฐ€์ ธ ์˜ค๋ ค๊ณ  ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘์ง€๋˜๊ณ  ๊ฐ„๋‹จํ•œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค. ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ...

์ด๊ฒƒ์€ ๋”๋ฏธ ํด๋ž˜์Šค์˜ onPress ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜„์žฌ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

GeolocationStatus geolocationStatus  = await Geolocator().checkGeolocationPermissionStatus();

if (geolocationStatus == GeolocationStatus.granted) {
  Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
  print('position $position');
}

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ pubspec.yaml ์—์„œ ์‚ฌ์šฉ์ค‘์ธ ํŒจํ‚ค์ง€ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

geolocator: ^5.3.2+2

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์€ info.plist ํŒŒ์ผ์— ์ถ”๊ฐ€ ํ•œ ํ‚ค์ž…๋‹ˆ๋‹ค.

  <!-- ...skipped by brevity -->
  <key>EnableBackgroundLocationUpdates</key>
  <true/>
  <key>NSLocationWhenInUseUsageDescription</key>
  <string>This app needs access to location when open.</string>
  <key>NSLocationAlwaysUsageDescription</key>
  <string>This app needs access to location when in the background.</string>
  <key>NSLocationAlwaysAndWhenInUsageDescription</key>
  <string>Always And In Use Permission</string>
  <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
  <string>This app needs access to location when open and in the background.</string>
  <!-- skipped by brevity... -->

@mvanbeusekom ๋‚ด๊ฐ€ ๋ญ˜ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋‹ˆ?

@mvanbeusekom , ๋งํฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ EnableBackgroundLocationUpdates ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€ btw ..

@markbeij , ์–ธ๊ธ‰ ๋œ ๋งํฌ๊ฐ€ 5.3.1 ๋ฆด๋ฆฌ์Šค์˜ ์ผ๋ถ€์˜€์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ์—ฐํ•ฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์—…๋ฐ์ดํŠธ ๋œ ํด๋” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ›จ์”ฌ ๊ฐœ์„  ๋œ ๋ฒ„์ „ 6.1.6์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์„ ๋” ์‰ฝ๊ฒŒ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ).

README.md์— ๋Œ€ํ•œ ํ˜„์žฌ ๋งํฌ : https://github.com/Baseflow/flutter-geolocator/blob/master/README.md

๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ์— ๊ด€ํ•œ ์„น์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์žˆ์„ ๋•Œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด XCode ํ”„๋กœ์ ํŠธ (ํ”„๋กœ์ ํŠธ> ์„œ๋ช… ๋ฐ ๊ธฐ๋Šฅ> "+ ๊ธฐ๋Šฅ"๋ฒ„ํŠผ)์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์„ ํƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ์—์ฃผ์˜ํ•˜์„ธ์š”. AppStore์— ์•ฑ์„ ์ œ์ถœํ•  ๋•Œ ์•ฑ์— ์™œ ์ด๊ฒƒ์ด ํ•„์š”ํ•œ์ง€ Apple์— ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Apple์ด ์„ค๋ช…์— ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ์•ฑ์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ EnableBackgroundLocationUpdates ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ Info.plist ํ•ฉ๋‹ˆ๋‹ค. geolocator๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ์—…๋ฐ์ดํŠธ๋ฅผ๋ฐ›์„ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ EnableBackgroundLocationUpdates ๊ฐ€ ํ•  ์ผ์€ ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์žˆ๋Š” ๋™์•ˆ ํ”Œ๋žซํผ์—์„œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ณ„์† ์ˆ˜์‹ ํ•˜๋„๋ก ํ”Œ๋žซํผ์— ์ง€์‹œํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค (์•„๋ฌด๊ฒƒ๋„ ํ˜ธ์ถœ๋˜๊ฑฐ๋‚˜ ์‹คํ–‰๋˜์ง€ ์•Š์Œ).

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰