마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안녕하세요 안드로이드 초보 개발자입니다. gps위치 전송에 대한 질문드립니다.

0 추천
이번에 App개발 준비하면서 gps로 내 위치를 다른 사람에게 전송하는 기능을 구현하려고 합니다.

책을 보니 안드로이드에서 내 위치를 좌표로 구한 뒤, 이를 통해 지도에서 내 위치를 표시한다는 내용이

나와있었는데, 그러면 이를 다른 사용자에게 표시하려면 좌표를 그 사람에게 전송한 뒤

이를 통해 그 사람 핸드폰에서 지도를 표시하면 되는건가요?

그리고 이런 데이터 전송 시에 어떤 서버를 사용해야 하는지 혹시 알려주시면 감사할 것 같습니다.
bonon (620 포인트) 님이 2020년 12월 30일 질문

1개의 답변

+1 추천
 
채택된 답변
먼저 학습용인지, 상용인지를 언급을 하셨어야 했는데, 질문의 수위를 보고 학습용이라고 판단해서 답변합니다.

서버는 어떤 걸로 해도 상관이 없습니다.
여러 사람이 개발한다면, 자바, 스프링부트로 해도 되고, 닷넷에 C# MVC로 해도 되며,
만약 혼자 개발한다면, Python Flask나 Node.js 를 추천합니다.
최근에 파이어베이스로 위치 공유 튜토리얼도 유투브에 많으니까, 그걸 공부해도 될텐데,
그쪽으로 위치공유는 저는 해 본적이 없어서, 추천은 못하겠네요.
시간이 많다면, 시행착오를 할 겸해서 따라해보는 것도 도움이 되겠죠.

DB는 파이어베이스인 경우엔 제공이 되니까 필요없는데,
Postgresql, MySQL, MSSQL 모두 학습용으론 공짜입니다.
MSSQL은 5G 이내인가는 무료..
(정확한 것은 사이트에서 다시 확인 필요합니다)
참고로 사용자의 위치 정보는 서버에서 보관하고 있으면 안됩니다.
때문에 메모리 상에 갖고 있고 시간이 지나면 삭제하는 구조로 만드는게 좋겠죠.
Redis를 추천합니다.
일단 DB에는 회원 정보와 친구 맺은 정보를 관리하고,
Redis (In-memory key-value database)에는 유저id 별로 위치 정보만 가지고 있으면 되죠.

서버는 API 서버를 만들어야 하고요.
앱 사용하는 모든 유저의 위치가 다 공유가 된다면 로그인은 필요없지만,
서로 일부 유저에게만 로케이션을 공유하겠다고 한다면, 좀 복잡해 지겠죠.

일단 가입/탈퇴 API,
로그인/로그아웃 API,
위치 포스팅 API,  
친구 위치 가져오기 API
유저를 검색 API를 통해 유저를 검색해야겠죠.
유저끼리 위치 공유를 허용/허용취소 하겠다는 Handshake API 가 필요합니다.
유저 정보 가져오기 API
내 정보 가져오기 API
내 정보 업데이트 API

앱에서 위치를 가져오는 코드는 많이 있으니, 참고하시고..
정확도나 어느 정도 시간마다, 어느 정도의 거리 이동이 있을 때 Noti를 받을 수 있으니,
적당한 변화폭이나 시간마다 서버로 위치를 포스팅하면 됩니다.

휴대폰 화면이 꺼지거나, 다른 앱을 사용할 때는 위치 정보가 업데이트가 안되는 것을 방지하기 위해서
Foreground Service에서 위치 정보를 받아야 합니다.
포그라운드 서비스를 만든지 3년 정도 되어서,
지금은 어떤 제약조건이 있는지는 모르겠네요.
다른 분들이 코멘트 해 주세요.
Will Kim (43,170 포인트) 님이 2020년 12월 30일 답변
bonon님이 2021년 1월 1일 채택됨
답변 감사합니다. 참고하겠습니다!
...