Flutter-geolocator: ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์ถ”์  ์ง€์› ์ถ”๊ฐ€

์— ๋งŒ๋“  2018๋…„ 07์›” 31์ผ  ยท  82์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Baseflow/flutter-geolocator

๋˜ํ•œ ์ฐธ์กฐ: https://github.com/flutter/plugins/pull/656

enhancement

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

๋‚˜๋Š” ๋˜ํ•œ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๊ณ  ๋ฐฐ๊ฒฝ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ๋‚ด ์ž์‹ ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๊ฐ€ flutter_background_location ์ž…๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋‚ด ์•ฑ ์ค‘ ํ•˜๋‚˜๋ฅผ Flutter๋กœ ์ „ํ™˜ํ•˜์ง€ ์•Š์€ ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์ถ”์ ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ณ„์† ์ง„ํ–‰ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ €๋„ ์ด๊ฒƒ์ €๊ฒƒ ์•Œ์•„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ GPS ์ถ”์  ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š” ํšŒ์‚ฌ ํ™˜๊ฒฝ์—์„œ ์•ฑ์„ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. flutter/plugins#656(์œ„์—์„œ ์–ธ๊ธ‰)์€ ์•„์ง Pub์— ์—†์œผ๋ฉฐ iOS๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ฑ์ด ๋‹ซํž ๋•Œ ์‹คํ–‰๋˜๋Š” ์ด Google ์ƒ˜ํ”Œ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚ด ์ž์‹ ์˜ ๊ตฌํ˜„(์ ์–ด๋„ Android์—์„œ)์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์œ„์น˜ ๋ฐ์ดํ„ฐ๋ฅผ Firebase์— ํ‘ธ์‹œํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฉ”์„œ๋“œ ์ฑ„๋„์— ๋ฐฑ์—…์„ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์œ„์น˜ ๊ฒฐ๊ณผ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Firebase์— ๋ฐ”๋กœ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋•๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜ํ™”ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ํ•ด๋‹น ์ƒ˜ํ”Œ ์ €์žฅ์†Œ๊ฐ€ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@aidandavis ๋ฐฉ๋ฒ•์„ ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
์ด ํŒจํ‚ค์ง€ ์—์„œ ๋ชจ๋“  ์œ„์น˜๋Š” sqlite์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
ํฌ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๊ฐ€ ์Šคํ† ์–ด ์ œ๊ณต์ž sqlite/firebase/...๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ.
MethodChannel์„ ์‚ฌ์šฉํ•˜๋ฉด db ํŒŒ์ผ ์œ„์น˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ํ”Œ๋Ÿฌํ„ฐ ์•ฑ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: Google ์ƒ˜ํ”Œ์€ Doze ๋ชจ๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฅ์น˜๊ฐ€ ๋„คํŠธ์›Œํฌ ์ž ์ž๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ GPS๋„ ์„œ๋น„์Šค์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ 2: ์ด stackoverflow ์Šค๋ ˆ๋“œ๋Š” ์ค‘๊ตญ ๋กฌ ๋ฐฐํ„ฐ๋ฆฌ ์ ˆ์•ฝ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์•ฑ์„ ๋ณดํ˜ธ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
Doze์— ๋Œ€ํ•œ ์ด

๊ทธ๊ฒƒ์€ ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์„ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์ด ์•ฑ์„ ๋‹ซ๋„๋ก ์„ ํƒํ•˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Doze์™€ ๊ด€๋ จํ•˜์—ฌ ์ „ํ™”๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์„ ๋•Œ(์˜ˆ: ํ…Œ์ด๋ธ” ์œ„)์—๋งŒ ์ ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๊ทธ ์ง€์ ์—๋Š” ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ถ”์ ํ•˜๋Š” ์ง€์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ž ์ž๊ธฐ ์ „์— ์ „์†ก๋œ ๋งˆ์ง€๋ง‰ ์œ„์น˜๋Š” ์—ฌ์ „ํžˆ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, alarm_manager_android์—์„œ ๊ตฌํ˜„ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ Dart ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Android ์ฝœ๋ฐฑ์€ ์•ฑ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  Dart ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด 2.1.0 ๋งˆ์ผ์Šคํ†ค์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ ๋ฒ„๋„ˆ๋กœ ๋ฐ€๋ ธ์Šต๋‹ˆ๊นŒ? ๋‚ด ํ”„๋กœ์ ํŠธ๋„ ์ด๋กœ๋ถ€ํ„ฐ ํฐ ์ด์ ์„ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–˜๋“ค์•„, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๊ธฐ๋Šฅ์€ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋‚ ๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ์žฅ์น˜๋Š” ํ™”๋ฉด์ด ๊บผ์ง„ ์ƒํƒœ์—์„œ GPS ์œ„์น˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋‹ค๋Š” ์ ๋„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ž ์‹œ ๋™์•ˆ ์ด๊ฒƒ์— ๊ฐ‡ํ˜€ ์žˆ์—ˆ๊ณ  ๋งˆ์นจ๋‚ด ์žฅ์น˜ ์นฉ์…‹์— ๋‹ฌ๋ ค ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠนํžˆ ์‹œ๊ณ„์™€ ๊ฐ™์ด ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ธฐ๊ธฐ์ธ ๊ฒฝ์šฐ ๋‹ค์‹œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@ibrierley ์›จ์–ด๋Ÿฌ๋ธ”์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ API >= 16์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ์žฅ์น˜(๋ชจ๋ฐ”์ผ/ํƒœ๋ธ”๋ฆฟ)๋Š” ํ™”๋ฉด์ด ๊บผ์ ธ ์žˆ์–ด๋„ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋„ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

๋„ค, ์ฃผ๋กœ ํ™”์›จ์ด ์›Œ์น˜ 2์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ, ํ™”์›จ์ด ์—”์ง€๋‹ˆ์–ด(ํ‹€๋ฆด ์ˆ˜ ์žˆ์Œ)๊ฐ€ ์นฉ์…‹์— ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ๊ณ ์น  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. (๋‚˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•  ๊ฒƒ์ด์ง€๋งŒ ๋น ๋ฅธ ๊ฒ€์ƒ‰์—์„œ ๊ทธ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค).

๋‚˜๋Š” ๊ฒฐ๊ตญ ํ™”๋ฉด์„ ๊ฒ€์€์ƒ‰์œผ๋กœ ๋ฐ”๊พธ์—ˆ์ง€๋งŒ ๊ทธ ์†”๋ฃจ์…˜์€ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. :) (๊ทธ๋Ÿฌ๋‚˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ๋งŽ์ด ์ ˆ์•ฝํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ™”๋ฉด์— ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ‘œ์‹œ๋˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

@martijn00 Geofence ํ”Œ๋Ÿฌ๊ทธ์ธ ์ด ์ด ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰์ด ๊ฒฐ์ •์ ์ธ ์—ญํ• ์„ ํ•  ๊ฒƒ์ด๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”...

๊ณง BG ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. :)

์•ˆ๋…•!
์ด ๋ฌธ์ œ์˜ ํ˜„์žฌ ์ƒํƒœ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ˆ„๊ตฐ๊ฐ€ ์ž‘์—… ์ค‘์ž…๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์—ฐ๊ธฐ๋˜์—ˆ๋‚˜์š”?

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„ https://pub.dartlang.org/packages/flutter_background_geolocation ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?
์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์—ฌ๊ธฐ์— ๋ฌป๋Š” ๋‚ด์šฉ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„ https://pub.dartlang.org/packages/flutter_background_geolocation ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?
์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์—ฌ๊ธฐ์— ๋ฌป๋Š” ๋‚ด์šฉ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

ํ•˜์ง€๋งŒ ๋น„์šฉ์€ $300 ์ด์ƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค
https://medium.com/flutter-io/executing-dart-in-the-background-with-flutter-plugins-and-geofencing-2b3e40a1a124

@christocracy , ๋‚˜๋Š” ๋‹น์‹ ์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋ชจ๋“  ์„ผํŠธ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋„ˆ๋ฌด ๊ฐ€๋‚œํ•ฉ๋‹ˆ๋‹ค :) ์ด ๊ณต๊ฐ„์„ ๋ณด๋ฉด์„œ

์•ˆ๋…•ํ•˜์„ธ์š” @christocracy ๋ฌด๋ฃŒ ๋ผ์ด๋ธŒ ์œ„์น˜๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค!

์˜ฌํ•ด ์•ˆ์— ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

์˜ฌํ•ด ์•ˆ์— ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๋ˆ„๊ตฌ๋‚˜ ์ฆ‰์‹œ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋“ค์–ด์˜ค๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ˆ˜์šฉํ•˜๋Š” ๋ฐ ๋งค์šฐ ๋Šฅ์ˆ™ํ•ฉ๋‹ˆ๋‹ค.

์ž, ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ฝ”๋“œ์— ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ณ  ์ตœ์„ ์„ ๋‹คํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. DI๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋ช‡ ์ฃผ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋จผ์ € Android์— ๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์œ„์— ;)

๋‹น์‹ ์˜ ์—ด์ •์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค :1st_place_medal:

gimmie ๋ฆฌ์†Œ์Šค ๋ฐ ์‹œ์ž‘ ์œ„์น˜ ์ฝ”๋“œ์— ๋ฐฐ์น˜

์ด ์ „์ฒด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ์ง€๊ณ  ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๊ทธ๋Ÿฌ๋‚˜... ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ช‡ ๊ฐ€์ง€ ๋†’์€ ์ˆ˜์ค€์˜ ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Android ์ตœ์‹  Android(API 26)์—์„œ ๊ณ ์ •๋ฐ€ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์–ป๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์ „๊ฒฝ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์‹ (Android Q)์—๋„ ์ถ”๊ฐ€ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์œ„์น˜ ๊ฐ€์ ธ์˜ค๊ธฐ). ๋”ฐ๋ผ์„œ Android pre 26, android 26 ๋ฐ android Q์™€ ํ˜ธํ™˜๋˜๋„๋ก 3๊ฐ€์ง€ ๋‹ค๋ฅธ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. Foreground ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ ์•Œ๋ฆผ์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋งž์ถคํ˜• ์•Œ๋ฆผ์„ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  3. iOS์™€์˜ ํ˜ธํ™˜์„ฑ. Geolocator API๋Š” ํ”Œ๋žซํผ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ตœ๋Œ€ํ•œ ์ˆจ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. Foreground Service๋Š” Activity์™€ ๋™์ผํ•˜๊ฒŒ ์ค‘์ง€ ๋ฐ ์žฌ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ๋…ผ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Flutter์—๋Š” ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ์œ ์ผํ•œ ์˜ˆ๋Š” alarm_manager ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฒ„๊ทธ๋„ ์žˆ๊ณ  ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค Flutter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ(์œ„์น˜, ๋ธ”๋ฃจํˆฌ์Šค, ์„ผ์„œ)๋ฅผ ์ถ”์ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žฅ๊ธฐ ์‹คํ–‰ ๋กœ์ง์„ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋ณ„๋„์˜ Foreground ์„œ๋น„์Šค๊ฐ€ ์žˆ๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์•Œ๋ฆผ์ด ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Google์—์„œ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”Œ๋Ÿฌํ„ฐ์— ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ํ”Œ๋Ÿฌํ„ฐ์—๋Š” Android ๋ฐ ios์—๋„ ๋ฐฐ๊ฒฝ ์œ„์น˜ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ๊ธฐ๋Šฅ ์š”์ฒญ์— ๋‚ด +1์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ์‡ผ์Šคํ† ํผ์ž…๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋†€๋ผ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1 ๋งŽ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ๋งค์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ˆ ์ง‘์—์„œ ์ฐพ์€ ๊ฒƒ์— ๊นŠ์€ ์ธ์ƒ์„ ๋ฐ›์•˜์ง€๋งŒ 300USD?

๋‚˜๋Š” ๋˜ํ•œ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๊ณ  ๋ฐฐ๊ฒฝ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ๋‚ด ์ž์‹ ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๊ฐ€ flutter_background_location ์ž…๋‹ˆ๋‹ค.

+1 ์ด๊ฒƒ๋„ ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค.

+1 ์ด๊ฒƒ์€ ๋งค์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

  • ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”!
  • 1

@milesgranger @Zeissus @shishirraven ๋ฐ ๊ธฐํƒ€

์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋Œ“๊ธ€์— +1 ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  ๋ฌธ์ œ์— ๋Œ€ํ•ด ์—„์ง€์†๊ฐ€๋ฝ์„ ์น˜์ผœ๋“œ๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

@AlexCampos95 ๋‚ด ๋ ˆํฌ์—์„œ ๋ฌผ์–ด๋ณด๋Š”๊ฒŒ ์–ด๋•Œ?

์•„์ง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์—†๋‚˜์š”?

์–ด๋–ค ํ•ด๊ฒฐ์ฑ…?

์–ด๋Š?

์ด๊ฒƒ์ด ๋„์›€์ด ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋ช‡ ๋‹ฌ ์ „์— ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/akinsete/Flutter-Background-Location-Service

์‹œ๋„ํ•ด๋ณด์‹ญ์‹œ์˜ค.

2019๋…„ 12์›” 12์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 12:05 Felix Hamborg [email protected]
์ผ๋‹ค:

์–ด๋Š?

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Baseflow/flutter-geolocator/issues/53?email_source=notifications&email_token=AFKOFXJ2RA2FV2Q6LBZBUXTQYKDNZA5CNFSM4FM72VCKYY3PNVWWK3TUL52HS4DFVREWSG43VMVBW63
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AFKOFXLSVIXG74CNIBXLPQDQYKDNZANCNFSM4FM72VCA
.

์ €์—๊ฒŒ ์ •๋ง ํšจ๊ณผ์ ์ธ ์œ ์ผํ•œ ๊ฒƒ์€ workmanager + geolocator ์ž…๋‹ˆ๋‹ค. ์•ฑ์˜ ๋ฐฐํ„ฐ๋ฆฌ ์ ˆ์•ฝ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋˜๋ฉด ํœด๋Œ€ํฐ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„์—๋„ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•, ์˜ˆ๊ณ ๋ฅด ๋น„์•Œ๋กœํ”„

์ข‹์€ ์ƒ๊ฐ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ํ•˜๋Š” ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‘˜ ๋‹ค ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด? ๊ฐ€๋Šฅํ•˜์‹œ๋‹ค๋ฉด ๊ณต์œ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”

2019๋…„ 12์›” 13์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 1:52 Yegor Vialov [email protected]
์ผ๋‹ค:

๋‚˜์—๊ฒŒ ์ •๋ง๋กœ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์›Œํฌ๋งค๋‹ˆ์ €๋ฟ์ด๋‹ค.
https://pub.dev/packages/workmanager + Geolocator
https://pub.dev/packages/geolocator . ๋ฐฐํ„ฐ๋ฆฌ ์ ˆ์•ฝ์ด ๋น„ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒฝ์šฐ
์•ฑ์˜ ๊ฒฝ์šฐ ์ „ํ™”๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„์—๋„ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/Baseflow/flutter-geolocator/issues/53?email_source=notifications&email_token=AFKOFXJ3L4B6SVPCWOUYBLLQYNENLA5CNFSM4FM72VCKYY5KOWSWWK3TUL52HS4DFVREXG43VMVBW63
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AFKOFXOP3K36MV6LCE3E7HTQYNENLANCNFSM4FM72VCA
.

@akinsete , HA ํด๋ผ์ด์–ธํŠธ: https://github.com/estevez-dev/ha_client

Workmanager๋Š” iOS์—์„œ ์ผ๊ด€์„ฑ์ด ์—†์œผ๋ฏ€๋กœ ์ž‘์—…์ด ์‹คํ–‰๋  ์‹œ๊ธฐ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ์—…๋ฐ์ดํŠธ ๋ชฉ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Android์—์„œ๋Š” ์ตœ์†Œ ๋นˆ๋„๊ฐ€ 15๋ถ„์ด๋ฏ€๋กœ ์ด ๋ฐฉ๋ฒ•๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”Œ๋Ÿฌํ„ฐ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Android์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ ์ „๊ฒฝ ์—…๋ฐ์ดํŠธ(ํ˜„์žฌ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ)์™€ ๋น„๊ตํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ํ˜ธ์ถœ ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์•ฑ์ด ์–ด๋–ค ์ƒํƒœ์— ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ตœ์ ์˜ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ๋“  ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์œ„์น˜ ์ถ”์  ํŒจํ‚ค์ง€์˜ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ฉฐ ์ด๊ฒƒ์ด Flutter์˜ 1์œ„ ์œ„์น˜ ํŒจํ‚ค์ง€๋ผ๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@christocracy ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฉฐ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ ์œ„์น˜๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ๋ช…๋ชฉ์ƒ์˜ ๋น„์šฉ์ž…๋‹ˆ๋‹ค.

@jamesdixon ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž‘์—…์— ์œ„์น˜ ์•Œ๋ฆผ์ด ์žˆ๋Š” ์ž‘์—… ๊ด€๋ฆฌ์ž ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. geolocator + flutter_local_notifications๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์ด ํฌ๊ทธ๋ผ์šด๋“œ์ผ ๋•Œ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ „ํ™˜๋˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. flutter_background_geolocation์€ ๋‚ด ์š”๊ตฌ ์‚ฌํ•ญ์— ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/rekab-app/background_locator

Maaaaan ๋‹น์‹ ์€ ์—ฌ๊ธฐ์—์„œ ๋ณด์„์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ๋ฌธ์„œ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/rekab-app/background_locator

Maaaaan ๋‹น์‹ ์€ ์—ฌ๊ธฐ์—์„œ ๋ณด์„์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ๋ฌธ์„œ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๋“ค์˜ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•œ๋‹ค. ๋•Œ๋กœ๋Š” ๋ฉ”์ธ ์•ฑ์„ ๋‹ซ์„ ๋•Œ ์ขŒํ‘œ ๊ธฐ๋ก์„ ๋ฉˆ์ถ”๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•ด์•ผํ•œ๋‹ค ...

์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. :)

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ๋“ฑ๋กํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด ์•ฑ์ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋„ path_provider๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ˆ˜์‹ ํ•˜์ง€ ์•Š๋„๋ก ์ฃฝ์ธ FlutterActivity์—์„œ ReceivePort๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ ๊ฒฉ๋ฆฌ๋ฅผ ์ข…๋ฃŒํ•œ ๋‹ค์Œ ์ƒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ ์ตœ์„ ์˜ ์†”๋ฃจ์…˜์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ(์•Œ๋ฆผ๊ณผ ํ•จ๊ป˜ dart ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ์Œ)๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ด ์˜ˆ์ œ ๋ฅผ ์ฐพ์•˜์ง€๋งŒ ๋””์Šคํฌ์— ํ•ญ๋ชฉ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก Kotlin ํŒŒ์ผ์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํ•ญ๋ชฉ์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ LatLng๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‹ค๋ฉด ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค๐Ÿ™

@christocracy ๋Š” ์œ„์˜ ๋ชจ๋“  ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค๋ฅผ ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(์•ฑ์ด ๋‹ซํžŒ ํ›„ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋…น์Œ์ด ์ค‘์ง€๋จ). ํ˜„์žฌ ๋™๋„ค ๋ณ‘์› ์›์žฅ์˜ ์š”์ฒญ์œผ๋กœ ์ฝ”๋กœ๋‚˜ ์ถ”์ ๊ธฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋‚˜๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋™๋„ค ๋ณ‘์› ์›์žฅ์˜ ์š”์ฒญ์œผ๋กœ ์ฝ”๋กœ๋‚˜ ์ถ”์ ๊ธฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋‚˜๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋Œ€์‹  Github์—์„œ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํฌํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@RomanJos @Ashar2shahid https://corona-trace.github.io/

@christocracy ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์Šต๋‹ˆ๋‹ค. Flutter์— ๋Œ€ํ•œ background-location-plugins ๊ฒ€์ƒ‰์ด ์ €๋ฅผ ์—ฌ๊ธฐ๋กœ ์ด๋Œ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์›น์‚ฌ์ดํŠธ์˜ ๋งํฌ: https://corona-trace.github.io/
Slack ์ฑ„๋„์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. slack์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค - ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ $300 ์ด์ƒ์„ ์ฐพ์„ ๋•Œ ๋งŽ์€ ์ž‘์—…์„ ์ ˆ์•ฝํ•  ๊ฒƒ์ด๋‹ค. Apple์€ ๋ธ”๋ฃจํˆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ์— ๋” ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ ์ƒ๊ฐ์—๋Š” ์œ„์น˜ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ๊ฐ€ ์ด ์‹œ๋Œ€์— ์ง€๋ถˆํ•˜๋Š” ์ž‘์€ ๊ฐ€๊ฒฉ์ด๋ฉฐ, ์ด์™€ ๊ฐ™์ด ๊ตฌ์ถ•ํ•˜๊ณ  Google ํ…Œ์ดํฌ์•„์›ƒ ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ •ํ™•ํžˆ ์ œ๊ฐ€ ์—ผ๋‘์— ๋‘์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@tatiblockchain ์ œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์˜ค์…”์„œ ๋…ผ์˜ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

์ƒ์ž์—์„œ ๊บผ๋‚ด๋Š” ๊ฒƒ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

@MazEbeid ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ณ  ์‹ถ์ง€๋งŒ ๊ทธ๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ง€์‹์ด ์—†์„ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์‹œ๊ฐ„์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์œ ๋กญ๊ฒŒ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋‚ด๊ฐ€ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ข‹์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํ•œ ์ดํ•ด)?

Flutter ํŒ€์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์œ„ํ•œ ํ›Œ๋ฅญํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž˜ ์ž‘๋™ํ•˜๋Š” ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ background_locator ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ํ˜„์žฌ ์•ฑ์ด ์ข…๋ฃŒ๋  ๋•Œ iOS์—์„œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋Ÿฐ ํฌ๋ง๋„ ์—†์ด ๋™์•„๋ฆฌ์— ๊ฐ€์ž…ํ–ˆ๋‹ค =(

ํ˜„์žฌ background_locator ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

background_locator ๋Š” ์ข‹์ง€๋งŒ... ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๋” ๊ฐ•๋ ฅํ•œ ๊ฒƒ์„ ์ฐพ๋Š” ๋ฐ ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์œผ๋ฉฐ(์—ฌ๊ธฐ์— ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.) ์˜ˆ๋ฅผ ๋“ค์–ด ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ๊ฑฐ๋‚˜ ํ™”๋ฉด์ด ๊บผ์ ธ ์žˆ๋Š” ๋™์•ˆ ์ด๋Ÿฌํ•œ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฅผ ๊ฐ–๋Š” ๋ฐ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งŽ์€ ์˜ต์…˜์ด ๊ฒฉ๋ฆฌ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ณ  ์†์ƒ๋œ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ฑฐ๋‚˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์†”๋ฃจ์…˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ƒ์ ์ด์ง€ ์•Š์€ ์•ก์„ธ์Šค ์˜ค๋ฅ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@Flavsditz ํ˜„์žฌ bg ์ถ”์ ์šฉ ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„๋งˆ๋„ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ฑ„ํŒ… ๊ฑฐํ’ˆ์„ ํ‘œ์‹œํ•˜์—ฌ ์œ„์น˜๋ฅผ ์ถ”์ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ œ๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์„œ๋น„์Šค๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ํ•˜์ง€๋งŒ iOS์—์„œ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— $300 ์ด์ƒ์„ ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์œ„์น˜ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— $300 ์ด์ƒ์„ ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์œ„์น˜ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ? ์ตœ๊ทผ์— ์—…๋ฐ์ดํŠธ๋˜์—ˆ์œผ๋ฉฐ ๋ฐฐ๊ฒฝ ์œ„์น˜๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/rekab-app/background_locator

@mvanbeusekom ์ด๊ฑฐ ๋„ฃ์„ ์˜ํ–ฅ ์žˆ์œผ์‹ ๊ฐ€์š”? ์—„์ฒญ๋‚˜๊ฒŒ ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

@ndhbr ์˜ˆ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ง€์›ํ•˜๋ ค๋Š” ์˜๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์ง๊นŒ์ง€๋Š” ๊ทธ๋Ÿด ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฒƒ(๋” ์ค‘์š”ํ•œ ๊ฒƒ)์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด iOS 14์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์œ„์น˜ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์œ„์น˜ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด API๋ฅผ ๋„์ž…ํ•œ iOS 14๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํŽธ์•ˆํ•จ์„ ๋Š๋‚€๋‹ค๋ฉด ์‹œ์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ๊ฑฐ์นœ ๊ฐ€์žฅ์ž๋ฆฌ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์•„์ด๋””์–ด๋Š” ์œ„์น˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๋งˆ๋‹ค ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ์„ ๋•Œ๋งŒ ์‹คํ–‰๋  Dart ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ด ๊ธฐ์‚ฌ ์— ์„ค๋ช…๋จ). ๊ณ„ํš์„ ์„ธ์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์„ ๋” ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

@mvanbeusekom
์•„ ๊ทธ๋ ‡๊ตฐ์š” ์—…๋ฐ์ดํŠธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹น์‹ ์˜ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๋ฏธ ๊ธ€์„ ๊ฑฐ์˜ ๊ฐ€์Šด์œผ๋กœ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” background_locator๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ฃผ์ผ ๋™์•ˆ ๋…ธ๋ ฅํ•ด ์™”์œผ๋ฉฐ(Android์—์„œ๋Š” ์ข…์ข… ์ž‘๋™ํ•˜์ง€ ์•Š์Œ) ๊ฒฉ๋ฆฌ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์œ„์น˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ ˆ์ฐจ๋Š” ์ฝœ๋ฐฑ์—์„œ ํŒŒ์ผ์„ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ฑ„์šฐ๊ณ  UI์˜ ๋งˆ์ง€๋ง‰ ๋ฐ”์ดํŠธ์—์„œ ํŒŒ์ผ์„ ์ฝ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ Android๋Š” ๋ช‡ ๋ถ„๋งˆ๋‹ค ์ฝœ๋ฐฑ์— ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋ฏ€๋กœ ๊ฑฐ์˜ ๋ชจ๋“  ์œ„์น˜๋ฅผ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. iOS์—์„œ๋Š” ์ ˆ์ฐจ๊ฐ€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์–ด์ฉŒ๋ฉด ์ด๊ฒƒ์€ ๋˜ํ•œ ์˜๊ฐ์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์•ˆ์ •์ ์ธ ๋Œ€์ฒด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์˜ํ–ฅ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์•ˆ์ •์ ์ธ ๋Œ€์ฒด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์˜ํ–ฅ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

https://github.com/rekab-app/background_locator ๊ฐ€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@TheMisir ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ํ”„๋กœ๋•์…˜ ์•ฑ์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์‹ ํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—๋„ ์ถฉ๋Œ ๋ณด๊ณ ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/rekab-app/background_locator/issues

@TheMisir ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ํ”„๋กœ๋•์…˜ ์•ฑ์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์‹ ํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—๋„ ์ถฉ๋Œ ๋ณด๊ณ ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/rekab-app/background_locator/issues

์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. (๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ๋ฌธ์ œ๋Š” ์ž˜๋ชป๋œ ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค).

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์•ˆ์ •์ ์ธ ๋Œ€์ฒด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์˜ํ–ฅ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

์˜ˆ, ํ”„๋กœ๋•์…˜์— ๊ธฐ๋Šฅ์ด ๊ธ‰ํžˆ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— https://www.transistorsoft.com/shop/products/flutter-background-geolocation์— ๋Œ€ํ•œ ๋ผ์ด์„ ์Šค๋ฅผ ๊ตฌ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ƒ์‚ฐ์—์„œ 1 ๊ฐœ์›” ๋™์•ˆ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•˜๋ฉด :
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
๋‚ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ(background_locator ์˜ˆ์ œ์—์„œ ์ฐพ์•˜์Œ)์— ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
var userPosition = await Geolocator().getCurrentPosition();
background_fetch: ^0.6.0์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐฉ์‹์œผ๋กœ.

๊ทธ๋ž˜์„œ ๋งค 15๋ถ„๋งˆ๋‹ค ์žˆ์ง€๋งŒ ๊ฝค ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ background_locator๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•˜๋ฉด :
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
๋‚ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ(background_locator ์˜ˆ์ œ์—์„œ ์ฐพ์•˜์Œ)์— ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
var userPosition = await Geolocator().getCurrentPosition();
background_fetch: ^0.6.0์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐฉ์‹์œผ๋กœ.

๊ทธ๋ž˜์„œ ๋งค 15๋ถ„๋งˆ๋‹ค ์žˆ์ง€๋งŒ ๊ฝค ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ background_locator๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” background_locator https://github.com/rekab-app/background_locator/issues/167 ์—์„œ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ์ด ํŒจํ‚ค์ง€๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/transistorsoft/flutter_background_geolocation ์ด ํŒจํ‚ค์ง€๋Š” ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

@Dereumaux-Adrien ์—…๋ฐ์ดํŠธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 15๋ถ„์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค..

@bhanuka96 ์‚ฌ์‹ค, ๊ทธ๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ๋‚ด ํ”„๋กœ์ ํŠธ์— ์ƒ์—…์  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์•„์ง ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋ˆ์„ ์“ธ ์ƒ๊ฐ์€ ์—†์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” background_fetch๋„ ๊ทธ๋“ค๋กœ๋ถ€ํ„ฐ ์™”๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ํŠธ๋žœ์ง€์Šคํ„ฐ ์†Œํ”„ํŠธ๋ฅผ ๊ฐ€์น˜ ์žˆ๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ๊ฐ€ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๋‚˜์ค‘์— flutter_background_geolocation์œผ๋กœ ์ „ํ™˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ TLDR

Geolocator๋Š” ์•„์ง ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์ •๋ณด๋ฅผ ์™„์ „ํžˆ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

์ง€๋ถˆํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด https://pub.dev/packages/flutter_background_geolocation ์ด ์‰ฝ๊ณ  ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด https://pub.dev/packages/background_locator ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์•„์ง ํ•  ์ˆ˜ ์—†์Œ).
๋นจ๋ฆฌ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„์ง ๋ˆ์„ ์“ธ ์ˆ˜ ์—†๊ณ  15๋ถ„๋งˆ๋‹ค ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ™•์ธ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. https://pub.dev/packages/background_fetch with https://pub.dev/packages/geolocator with ์—ฌ๊ธฐ์— ์ž‘์„ฑ๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ

https://medium.com/@pierre.sabot/how -to-fetch-user-location-in-background-with-flutter-e3494021bdf5์— ์ž์„ธํžˆ ์„ค๋ช…๋œ ๋Œ€๋กœ WorkManager๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Android์˜ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ 15๋ถ„์œผ๋กœ ์ œํ•œ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ธ ๊ฐ„๋‹จํ•œ API์ž…๋‹ˆ๋‹ค.

https://pub.dev/packages/background_location ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‚ฌ์šฉ์ž ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๊ณ  firestore์— ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์œ„์น˜๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ๋„์ฐฉํ•  ๋•Œ ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ์ •๋ง๋กœ ์›ํ•˜์ง€ ์•Š๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ž˜์„œ ์œ„์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์•ฑ์ด ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋Œ์•„์˜ฌ ๋•Œ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋”˜๊ฐ€์— ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Œ) .

ํ˜„์žฌ location ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ geolocator ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ  ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์˜ˆ์˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

https://medium.com/@pierre.sabot/how -to-fetch-user-location-in-background-with-flutter-e3494021bdf5์— ์ž์„ธํžˆ ์„ค๋ช…๋œ ๋Œ€๋กœ WorkManager๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Android์˜ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ 15๋ถ„์œผ๋กœ ์ œํ•œ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ธ ๊ฐ„๋‹จํ•œ API์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” 15๋ถ„๋งˆ๋‹ค ์ฃผ๊ธฐ์ ์œผ๋กœ ์œ„์น˜๋ฅผ ์–ป์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋งค์‹œ๊ฐ„ ์ฃผ๊ธฐ์ ์ธ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์œ„์น˜๋ฅผ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘์—… ๊ด€๋ฆฌ์ž๊ฐ€ ์ž‘๋™ํ•˜์ง€๋งŒ(์•Œ๋ฆผ์ด ํ‘œ์‹œ๋จ) ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ฃผ๊ธฐ์ ์ธ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•ด ๋ณด์…จ๋‚˜์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฝ๋‹ˆ๊นŒ?

@mvanbeusekom ์•ฑ์ด ํฌ๊ทธ๋ผ์šด๋“œ์— ์žˆ๋Š” ๋™์•ˆ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ•˜๋‚˜์š”?
์ „๊ฒฝ์ด๋ž€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์ด์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ํ™ˆ ๋ฒ„ํŠผ์„ ํƒญํ–ˆ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ ์ „ํ™˜ํ–ˆ๊ฑฐ๋‚˜ ํ™”๋ฉด์ด ๊บผ์ ธ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Android์˜ ๊ฒฝ์šฐ ์•ฑ์ด ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ์ง€์†์ ์ธ ์•Œ๋ฆผ์„ ํ‘œ์‹œํ•˜๋Š” ํฌ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. iOS์˜ ๊ฒฝ์šฐ ์ƒํƒœ ํ‘œ์‹œ์ค„์— ๋…น์ƒ‰ ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(NSLocationWhenInUsage ๊ถŒํ•œ์—์„œ ํ—ˆ์šฉ๋จ).
์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฌ์šธ ๊ฒƒ์ด๋ฉฐ ์‹ค์ œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋งŽ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (๋ฐฑ๊ทธ๋ผ์šด๋“œ ์œ„์น˜ ์ ‘๊ทผ์€ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์•ฑ์ด ์ข…๋ฃŒ๋˜๋ฉด ์•ฑ์ด ์‹คํ–‰๋˜๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๊ฐ€ ์•ฑ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค).

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