1. 백그라운드에서 위치를 받아오는 이유
배달어플에서 중요한 기능 중 하나는 관리자가 라이더 위치를 관제하는 것이다.
관제라는게 나쁘게 보일 수 있지만, 바쁠때 정말 정신없이 바쁘다 보니,
관리자가 그 경로에 있는 친구에서 이 콜도 같이해라 콜을 넣기도 하고,
이 경로는 좋지 않으니 콜을 빼서 다른 사람에게 줄 수도 있다.
이러한 이유로 위치 불러오기가 굉장히 중요하다.
하지만 안드로이드는 버전 업데이트를 하면서 어떻게 하면 배터리 소모를 줄일 수 있는 방법(최적화)을
고민하였고 다양한 제약이 걸리기 시작했다.
특히 안드로이드 9버전부터..
9 > 10 > 11 로 가면서 제약을 점점 더 구체적이고 사용자가 허가해야하는 부분도 많아졌다.
developer.android.com/about/versions/oreo/background-location-limits
Location Manager
- 위치 업데이트는 시간당 몇 번만 백그라운드 앱에 제공됩니다.
현재 개발된 방법으로 초기에 공부했던 책 예시 코드에 따라 Location Manager 이걸로 개발을 진행하였다.
하지만 이게 백그라운드 앱에서 시간당 몇 번만? 이라는 제약이 있었고,
테스트결과 5분에 한번씩만 위치를 불러오는게 확인되었다.
따라서 다른 방법으로 개발해야할 필요성을 느꼈다.
2. geofencingapi(지오펜싱)
사용자의 실시간 위치와 출입 정보를 기록을 위해 만들어진 기술로 이 지오펜싱을 활용하니
백그라운드에서도 실시간 위치를 잘 불러 왔다.
stackoverflow.com/questions/28535703/best-way-to-get-user-gps-location-in-background-in-android
여기서 좋아요 13개 받은
Grant required permission ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION after start service
글의 코드를 분석해보면 잘 돌아가는걸 확인할 수 있다.
여기서
startForeground(101, notification);
이런코드가있는데
이 startForeground처럼 사용자에게 현재 백그라운드에서 위치 확인을 진행하겠습니다.
라는 노티를 띄우지 않으면 백그라운드에서 서비스가 실행되지 않는 이유로 이 코드가 들어있는 것이다.
이러한 제한이 사실 맞다고 본다.
이상한 어플을 깔아서 계속 내 위치가 전송되고, 그런 사고도 많이 있었기 때문에
당연히 개발하는 사람 입장에서는 제공해야한다고 생각한다.
'안드로이드 코드' 카테고리의 다른 글
[구글 스토어 API 29] 초 간단 백그라운드 위치 권환 (항상 허용 코드) (0) | 2021.08.03 |
---|---|
안드로이드 홈버튼, 뒤로가기버튼, 강제종료 코드 (0) | 2021.07.29 |
20201228 EditText 밑줄 없애기 (java코드) (0) | 2020.12.28 |
20201228 ViewSwitcher 아주 훌륭해! (0) | 2020.12.28 |
20201228 안드로이드 위로 올려 프로그램 종료 (0) | 2020.12.28 |
댓글