Flutter-geolocator: Android - ์ฒ˜์Œ ์‹คํ–‰๋œ CheckGeolocationPermissionStatus๊ฐ€ ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

Android ํ”Œ๋žซํผ์—์„œ Geolocator()๋ฅผ ์‹คํ–‰ํ•  ๋•Œ. CheckGeolocationPermissionStatus() ํ•จ์ˆ˜๋Š” GeolocationStatus๊ฐ€ ๊ฑฐ๋ถ€ ๋˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ IOS์—์„œ ์ฒ˜์Œ์œผ๋กœ ๋™์ผํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ GeolocationStatus๋ฅผ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Geolocator()๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. GetCurrentPosition()์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ  ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ๊ฒฝ์šฐ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์œผ๋กœ checkGeolocationPermissionStatus๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ Android์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ์ฝ”๋“œ ์•„๋ž˜ :

Future<void> getLocation() async {
    try {

      var serviceEnabled = await  Geolocator().isLocationServiceEnabled();

      if (serviceEnabled) {
        var geolocationStatus =
            await Geolocator().checkGeolocationPermissionStatus();

        if (geolocationStatus == GeolocationStatus.granted || geolocationStatus == GeolocationStatus.unknown) {
          position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
          return;
        } 
      }
    } catch (e) {
      print(e);
    }
  }

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

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ์ž๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ง€์›ํ•˜๋Š” ๋ฐ ๋” ๊ด€์‹ฌ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • ์†”๋ฃจ์…˜์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜, ๋‹น์‹  ๋ง์ด ๋งž์•„! ๋‚˜๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ๋‹ต์ด์—†๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. =/

@azeemgujjar , @CNogueira92 , ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์‹ค์ œ๋กœ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ OSS ํ”„๋กœ์ ํŠธ๋กœ์„œ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

@CNogueira92 ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด Android์™€ iOS๋Š” ๊ถŒํ•œ์„ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Android๋Š” ๊ถŒํ•œ์„ "๊ฑฐ๋ถ€๋จ"์œผ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๊ฑฐ๋ถ€ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„). iOS์—๋Š” ๊ถŒํ•œ์ด ์•„์ง ์š”์ฒญ๋˜์ง€ ์•Š์€ ์ƒํ™ฉ์— ๋Œ€ํ•œ ํŠน์ • ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค("๊ฒฐ์ •๋˜์ง€ ์•Š์Œ"์ด๋ผ๊ณ  ํ•จ, "์•Œ ์ˆ˜ ์—†์Œ"์œผ๋กœ ๋ฒˆ์—ญ๋จ).

๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘ checkGeolocationPermissionStatus ๊ฐ€ denied ๋˜๋Š” unknown ๋ฐ˜ํ™˜ํ•  ๋•Œ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ "๊ฑฐ๋ถ€๋˜๊ณ  ๋‹ค์‹œ ๋ฌป์ง€ ์•Š์Œ" ์˜ต์…˜์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ Geolocator๋Š” ์ด๋ฅผ ์ธ์ง€ํ•˜๊ณ  ๊ถŒํ•œ์„ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ Geolocator๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋™์œผ๋กœ ๊ถŒํ•œ์„ ํ™•์ธํ•  ํ•„์š”์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Future<void> getLocation() async {
    try {

      var serviceEnabled = await  Geolocator().isLocationServiceEnabled();

      if (serviceEnabled) {
        position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
      } else {
        // TODO: ask the user to enable the location services...   
      }
    } catch (e) {
      print(e);
    }
  }

checkGeolocationPermissionStatus ๋Š” ์ˆ˜๋™์œผ๋กœ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์กฐ์น˜๋ฅผ ์ทจํ•˜๋„๋ก ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์— ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์ˆ˜๋™์œผ๋กœ ๊ถŒํ•œ์„ ์š”์ฒญํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์ง€๋ฆฌ ์œ„์น˜ ์ถ”์ ๊ธฐ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” location_permissions ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. location_permissions ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ์—ฌ๊ธฐ ์—์„œ ์ฐพ์„ ์ˆ˜

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