์ฑ์ ์ฌ์ฉํ๋ ๋์์๋ง ํ์ฉ์ ์ ํํ๋ฉด Android 10์ ์๋ก์ด ์ต์
Geolocator().checkGeolocationPermissionStatus()
๊ฐ GeolocationStatus.denied
๋ฐํํฉ๋๋ค.
๋ฒ์ : 5.1.4
ํ๋ซํผ:
:๋ก๋ด: ์๋๋ก์ด๋
GeolocationStatus.denied๋ฅผ ๋ฐํํ๋ ์ฝ๋์ ๋ํด ์์ธํ ์๋ ค์ฃผ์ค ์ ์์ต๋๊น?
์ํ ์ฑ์ผ๋ก ์ฌํํ ์ ์์ต๋๋ค.
Android 10 ์๋ฎฌ๋ ์ดํฐ๋ก ์๋ํด ๋ณด์ธ์.
์๋ฎฌ๋ ์ดํฐ๊ฐ GeolocationStatus.denied ์ค๋ฅ๋ฅผ ํด๊ฒฐํฉ๋๊น?
๋ฌด์จ ๋ง์ธ์ง ์ดํด๊ฐ ์ ์๊ฐ๋ค์
์ฝ๋์ ์์ฑํ๋ ค๋ ๋ด์ฉ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ์๊ฒ ์ต๋๊น? ๋ฌธ์ ๋ฅผ ์ฌํํ๋ ค๊ณ ํ์ง๋ง ๋ ๋ง์ ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค.
Android 10์ด ์ค์น๋ Android ์๋ฎฌ๋ ์ดํฐ์์ ๋ฐ๋ชจ ์ฑ์ ์ฌ์ฉํด ๋ณด์ธ์.
์ด ๋ฌธ์ ๋ฅผ ์ฌํํ๊ณ ์ฅ์น์ ์์น ์ค์ ์ด ๊บผ์ ธ ์๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ค์ > ์์น > ์์น ์ฌ์ฉ > ์ผ๊ธฐ๋ก ์ด๋ ํฉ๋๋ค.
์์น๊ฐ ์ผ์ ธ ์์ผ๋ฏ๋ก ํ์ธํ๊ธฐ ๋๋ฌธ์ ํญ์ ํ์ฉ์ ์ ํ
์ฑ์ ์ถ๋ ฅ์ FusedLocationProvider๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ํ์๋ฉ๋๋ค. ์ด ํด๋์ค์ ๋ํ ๋ฒ๊ทธ ์์ ์ด ํฌํจ๋ Google Play ์๋น์ค ๋ฒ์ 11.6.0 ์ด์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ณด์๋ค์ํผ ์ ๋ Google Play ์๋น์ค 19.2.75๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์์น๋ ์ผ์ ธ ์์ต๋๋ค.
์๋ก์ด Android 10์์ ์์ ํ ์๋ก์ด ๊ถํ์ ๋๋ค. ๋ค๋ฅธ ๊ฒ์ฌ๊ฐ ํ์ํ๋ฏ๋ก Allowed ๋๋ Denied๋ฅผ ์ ๊ณตํด์๋ ์๋ฉ๋๋ค.
https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_BACKGROUND_LOCATION
@humazed Geolocator().checkGeolocationPermissionStatus() ๋ฉ์๋๋ก ๋ฌด์์ ๋ฌ์ฑํ๋ ค๊ณ ํฉ๋๊น? ์์น ์ค์ ์ ํญ์ ํ์ฉ์ผ๋ก ์ค์ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ถํ ํ์ธ์ฉ์ผ๋ก ์ฌ์ฉํ๊ณ ๋ฐ๋ชจ์ฑ์์๋ ์ฌ์ฉํ๋๋ฐ ์๋์ด ์๋๋ค์.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๋ ์ฑ์ ์ฌ์ฉํ๋ ๋์์๋ง ํ์ฉํ๋๋ก ์ ํํ ๊ฒฝ์ฐ์๋ง ๋ํ๋ฉ๋๋ค.
2019๋
10์ 10์ผ ๋ชฉ์์ผ ์ค์ 10:09 Stijn van Woerkom [email protected]
์ผ๋ค:
@humazed https://github.com/humazed ๋ฌด์์ ๋ฌ์ฑํ๋ ค๊ณ ํฉ๋๊น?
Geolocator().checkGeolocationPermissionStatus() ๋ฉ์๋? ๋๋ ์๋ฌด๊ฒ๋ ์ป์ง ๋ชปํ๋ค
์์น ์ค์ ์ ํญ์ ํ์ฉ๋จ์ผ๋ก ์ค์ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/BaseflowIT/flutter-geolocator/issues/334?email_source=notifications&email_token=ACDNYJTFXDG2QBXZGR24XQTQN3PLPA5CNFSM4I5CDEP2YY3PNVWWK3TUL52HS4DFVEXG43VMV
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/ACDNYJS7PSSNNQPH3S7HBWTQN3PLPANCNFSM4I5CDEPQ
.
@humazed ์๋ก์ด Android 10์์ Geolocator().checkGeolocationPermissionStatus() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ชจ ์ฑ์ ์ฌํํ์ผ๋ฉฐ ์ฑ์ ์ฌ์ฉํ๋ ๋์์๋ง ํ์ฉํ๋๋ก ์ ํํ์ ๋ 0 ์ค๋ฅ๋ฅผ ๊ฒ์ํ์ต๋๋ค. ๋ด๊ฐ ๋ณผ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋ณด๋ด ์ฃผ์๊ฒ ์ต๋๊น?
๋ฐฉ๊ธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ๊ณ ๋ณ๊ฒฝ ์์ด ์คํํ์ต๋๋ค.
ํ์ฌ ์ฌ์ฉ ์ค์ธ ์๋ฎฌ๋ ์ดํฐ์ ๋ฌธ์ ๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋์ผํ ๋์์ด ๋ํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ ์๋ฎฌ๋ ์ดํฐ๋ ๋ง๋ค์์ต๋๋ค.
๋ฌธ์ ๋ ์๋ฎฌ๋ ์ดํฐ์ ์ค์ ์ ๋ ๋ง์ด ์์กดํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฑ์ Google Play ์๋น์ค์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋์ ์์ต๋๋ค. ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉ ์ค์ด๊ฑฐ๋ Google Play ์๋น์ค๋ฅผ ์ง์ํ์ง ์๋ ์์น์ ์์ต๋๊น?
์๋ก์ด ์๋ฎฌ๋ ์ดํฐ๋ก ์๋ํ์ง๋ง ๋ฌธ์ ๋ ๋์ผํฉ๋๋ค
์ฑ์ android10๋ณด๋ค ๋ฎ์ ๋ชจ๋ ๋ฒ์ ์์ ์ ์๋ํฉ๋๋ค.
๋ด๊ฐ ์ ๊ณตํ gif์์ Google Play ์๋น์ค ๋ฒ์ ์ ํ์ํ๊ณ ์์ผ๋ฉฐ ์์น๊ฐ ํ์ฑํ๋์ด ์์ต๋๋ค.
๋ฒ์ 5.1.4+1์ ์ฌ์ฉํ๊ณ SDK 28๋ก ์ปดํ์ผํ๋ ๊ฒฝ์ฐ์๋ ์ด์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. SDK 29์์ ์ปดํ์ผํ๋ฉด ์๋ํฉ๋๋ค. Android 10์ ์คํํ๋ Pixel 3a์์ ์คํํฉ๋๋ค.
๋ฒ์ 5.1.4+1์ ์ฌ์ฉํ๊ณ SDK 28๋ก ์ปดํ์ผํ๋ ๊ฒฝ์ฐ์๋ ์ด์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. SDK 29์์ ์ปดํ์ผํ๋ฉด ์๋ํฉ๋๋ค. Android 10์ ์คํํ๋ Pixel 3a์์ ์คํํฉ๋๋ค.
compileSdkVersion
๋ฐ targetSdkVersion
๋ฅผ 29๋ก ์ค์ ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์์ ํ์ธํ ์ ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
iOS์์๋ ๋ณผ ์ ์์ต๋๋ค. getCurrentPosition()์ ์ฑ์ ์ฌ์ฉํ๋ ๋์ ํญ์ ์์น๋ฅผ ํ์ฑํํ๊ฑฐ๋ ์์น๋ฅผ ํ์ฑํํ๊ฑฐ๋ ์์น ์ก์ธ์ค๋ฅผ ๊ฑฐ๋ถํ๋ ๋ํ ์์๋ฅผ ํ์ํฉ๋๋ค. "์ฑ์ ์ฌ์ฉํ๋ ๋์ ํ์ฑํ"๋ฅผ ์ ํํ๋ฉด "PERMISISON_DENIED" ์ค๋ฅ์ ํจ๊ป ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ง๋ฆฌ ์์น ์ถ์ ๊ธฐ 5.1.3์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
Pixel 4์์๋ ์ ์ฌํ ์ค๋ฅ๊ฐ ์ฌํ๋ฉ๋๋ค.
๊ฐ์ ๋ฌธ์ ์
๋๋ค.
Samsung Galaxy S10 Plus, "์ฌ์ฉ ์ค ์ก์ธ์ค ์ ์ง"๋ฅผ ํด๋ฆญํ๋ฉด PermissionStatus.denied๊ฐ ํ์๋ฉ๋๋ค.
ํ์ฌ ์์น ๊ถํ ํ๋ฌ๊ทธ์ธ์ ์ ๋ฒ์ ์ ๊ฐ๋ฐ ์ค์ ๋๋ค. ์ด ์ ๋ฒ์ ์๋ ์ฌ์ฉ ์ค ์ก์ธ์ค๊ฐ ํฌํจ๋๋ฉฐ ๋ ์ด์ PermissionStatus.denied๋ฅผ ๋ฐํํ์ง ์์ต๋๋ค.
Urgh - ํ๋ก๋์ ์ฑ์ ๋ํด ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์์์ ๋ฐฉ๊ธ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉ ์ค ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ๋ ์ด ๋ฉ์๋๊ฐ PermissionStatus.granted๋ฅผ ๋ฐํํ ๊ฒ์ด๋ผ๊ณ ์๋ชป ๊ฐ์ ํ์ต๋๋ค. ๊ทธ๋์ ๋ ์ด์ ์ด๊ฒ์ ์์กดํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํธ์ง: 2์๊ฐ ํ ๋๋จธ์ง ์ค๋ ๋๋ฅผ ์ฝ๊ณ "compileSdkVersion ๋ฐ targetSdkVersion์ 29๋ก ์ค์ ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์์ ํ์ธํ ์ ์์ต๋๋ค."๋ผ๋ ์ ์์ ๊นจ๋ฌ์์ต๋๋ค. ๊ณต์ฅ.
"compileSdkVersion ๋ฐ targetSdkVersion์ 29๋ก ์ค์ ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์์ ํ์ธํ ์ ์์ต๋๋ค." AndroidManifest.xml์ ์ด๊ฒ์ ์ถ๊ฐํ ๋๊น์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
@JBBx2016 android.permissions.ACCES_BACKGROUND_LOCATION ๊ถํ์ ๋ํด ์์ ์ค์ ๋๋ค. ๊ถํ์ด ์์ ๋๋ฉด ์ค๋ฅ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ชจ๋ ์ ๋ฐ์ดํธ?
๋ชจ๋ ์ ๋ฐ์ดํธ?
๋ชจ๋ ์ ๋ฐ์ดํธ
Android 10 ๊ธฐ๊ธฐ์์๋ ์๋ํ์ง ์์ต๋๋ค. :|
์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ด ํฌํฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ง์ ์ฅ
๋ถ๋ช
ํ ๊นจ์ง location_permissions์์ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ permission_handler๋ก ๊ถํ ํญ๋ชฉ์ ์ฎ๊ฒผ์ต๋๋ค.
๋ด ์ฑ์ Google Play ์๋น์ค ํ์
์ดํ์ ์๋์ ๋ฉ์ถฅ๋๋ค. Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
ํ์ฌ "๊ฑฐ๋ถ" , "์น์ธ" ๋ฑ์ ๋๋ต์ ํ๋ฉด
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ ์๋ํฉ๋๋ค.
Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.best);
์๋ฎฌ๋ ์ดํฐ๊ฐ ์๋ Android 10, ์์ ์ ์ธ ์ต์ ๋ถ๊ธฐ ํ๋ฌํฐ.
Geolocator locator = Geolocator();
locator
.checkGeolocationPermissionStatus(
locationPermission: GeolocationPermission.locationWhenInUse)
params์์ ๊ถํ์ ์ ๋ฌํด์ผ ํฉ๋๋ค.
GeolocationPermission.locationWhenInUse
๋ฒ์ 6.0.0์์ ์์ ๋จ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
compileSdkVersion
๋ฐtargetSdkVersion
๋ฅผ 29๋ก ์ค์ ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์์ ํ์ธํ ์ ์์ต๋๋ค.