오래된 프로그래머의 요즘 이야기

그리고 소소한 일상들...

허니의 소소한 일상들이 켜켜이 쌓여가고......

Tech Story

[Flutter]스콜 앱미터기 재등록, 그리고 ChatGPT 와 첫대화~~~

쭝허니 2023. 8. 9. 23:13

예전에 만들어서 안드로이드에 등록했던 나의 최초 등록 앱 "스콜(S.Call) 앱미터기"!
많은 사용자는 아니지만 천여명 정도의 분들이 사용하고 있었는데, 올해 들어 택시요금이 많이 오르고 할증시간대, 거리, 운임요율 등 기본 데이터의 변화가 너무도 많았었다. 그런데 이런저런 플젝 진행하느라 지금까지는 방치해 두고 있었던게 사실이고......

최근 앱에 설정되어 있는 택시요금 좀 변경해 달라는 메일이 자주 들어 오길래, 일주일 정도는 작업해야 겠다 싶어 큰맘 먹고 수정하기로 결심했다. 작업하면서 가장 힘들었던게 BackGround Location 처리였다.
앱 특성 상 GPS좌표를 수신 받아 택시종류별/지역별 요금체계를 적용해서 택시를 타고 이동하는 동안 요금을 계산하는게 메인 기능인데 휴대폰 화면을 끄거나 다른앱 뒤에 있을 경우, 홈버튼으로 기본화면으로 돌아갔을때 등등 의 백그라운드 상태에서는 GPS정보를 가져오지 못한다. Foreground 사용 조건 만 승인되어 있기 때문에......
휴대폰이 백그라운드 상태여도 택시 요금 계산은 계속 해야하기 때문에 GPS 정보를 가져와야 하는데 난감하군.
사실, AndroidManifest.xml에 ACCESS_BACKGROUND_LOCATION 권한 부여하고 사용자가 승인하게 하면 간단히 해결되기는 한다. ("항상 허용" 이라는 항목이 하나 더 늘어 나겠지만......)
처음 앱을 만들때와는 정책 부터 너무 많은 변화가 있었던 것이다. 특히 개인정보에 관련해서 말해 무엇할까나......

최초 개발할 당시의 안드로이드 버전은 위치정보 사용권한을 동의하면 백그라운드 사용권한도 함께 들어왔던 것 같은데 (Android SDK 28 이하 인 경우로 알고 있다), 지금은 타겟팅을 33으로 하고 있고 개인정보보호방침 및 ACCESS_BACKGROUND_LOCATION 권한을 얻기 위해 심사 요청해야 할 사항들이 너무 많고 힘들어 졌다. 처음 리젝된 사유 2가지가 바로 개인정보처리방침 하고 ACCESS_BACKGROUND_LOCATION 을 사용하기 위해 사용자에게 내용을 미리 알려야 한다는 것이었다.
가이드 문서에 있는 내용은 Background 보다는 Foreground 처리 방식을 권유하고 있었고, 앱개발 경력이 미천한 나는 Google 개발자 가이드에서 권유하는 방식으로 프로그램을 바꿔보기로 했다.
직전 플젝에서 한번 경험해 봤기 때문에 추후 앱 등록할때는 가이드 제안대로 하는게 더 유리할 것 같다는 생각도 있고......

일단, AndroidManifest.xml 에서 ACCESS_BACKGROUND_LOCATION 권한을 제거하고 geolocator, background_locator_2 패키지를 사용하기로 했다.
그런데, background_locator_2 에도 Setup문서에는 ACCESS_BACKGROUND_LOCATION 를 포함하라고 되어 있었지만, 나는 ACCESS_BACKGROUND_LOCATION  권한을 빼고 Release mode 로 실행시켜 봤는데 백그라운드 상태에서도 위치정보 를 정상적으로 수신함을 확인했다.
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
아마도 ACCESS_BACKGROUND_LOCATION 대신, FOREGROUND_SERVICE 권한때문에 가능한 것 같다.

정확하지는 않지만 추측컨데, ACCESS_BACKGROUND_LOCATION 권한을 사용할 때는 사용자에게 백그라운드 상태에서 위치정보를 수집하고 있음을 알리는 Notification을 제공해야 한다고 Manual에 명시된 내용이 있었던 것 같은데, Notification이 제공된 상태에서는 FOREGROUND_SERVICE 가 ACCESS_BACKGROUND_LOCATION 역할을 대신하고 있지 않는가 싶다.
즉, 동일한 ApplicationID의 알림메세지를 상단 TaskBar에 띄워 놓았기 때문에, 이로 인해 백그라운드 상태가 아닌 Foreground상태인걸로 OS가 인식하고 있는 것 같다는 말이다. 그리고 이 역할을 바로 background_locator_2 가 해주고 있다고 판단하고 있다.

아무튼, 배포를 위한 심사요청은 방금 다시 했고, 퇴근하면서 내차에서 테스트 한번 더 해봐야 할 것 같다.

퇴근전 내 탭에 ChatGPT 깔려있는 걸 처음으로 봤다. (아니 정확히 말하면 ChatGPT 를 사용해볼 여유가 없었던 것 같다. 통신사에서 제공하는 기본 앱이라고만 생각하고 있었을 뿐......)

갑자기 궁금해졌다. 함 써봐야지 하고 던진 첫질문, 그리고 그 대답은 다음과 같다.

오호~~~ 제법이야.

이정도면 베이스 코딩은 요녀석한테 시켜놓고 프로그래머는 다듬기만 해도 괜찮을 법 한것 같다.
실제 이렇게 작업 할 만한 부분도 많을 것 같고, 이미 이렇게 작업하는 사람들도 많이 있겠구나 라고 생각해 보니, 내가 너무 변화에 뒤떨어져 있었구나, 라는 생각에 스스로를 채찍질 하는 마음을 가져보게 된다.

하지만 이것도 코딩하는 수많은 Style 중 하나일 뿐, 상황에 맞게 효율적으로 활용하면 되지 않겠는가?
기죽지 말자. 허니야. 세종대왕이 노트북 내던진 사건처럼 얘기 할 수도 있잖아?
ㅋㅋ 이것도 한번 AI 한테 물어봐야겠다.

'Tech Story' 카테고리의 다른 글

RunBTI 달리기 성향 분석 출시  (0) 2023.10.22
[Agile] 애자일 방법론에 대한 단상(短想)  (0) 2023.08.23
MBTI App 출시  (0) 2023.08.04
[FLUTTER] Background 처리  (0) 2023.08.04
코딩과 경험  (0) 2023.08.04