위치 정보 수신

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

codex 을 통해서 위치 정보 수신 하는 앱을 구현해 보고 있는 중입니다.
2번쨰 앱을 만들어 보고 있는데, 앱에서 위치 정보를 수신해 현재 위치를 저장하는 코딩을 해 보는 중인데

codex 가 말하는 아래 의견에 대해, 어떻게 판단 해야 하는 지 알 수 없어서 글을 남깁니다.
의견을 들을 수 있을까요 ?


차이는 명확합니다.

jeju는 브라우저/웹뷰 표준 위치 API를 씁니다:

  • billcorea-jeju/src/App.tsx:572에서 navigator.geolocation.getCurrentPosition(…)
  • billcorea-jeju/src/App.tsx:573에서 isSecureContext 체크
  • 즉, 브라우저 권한창 + OS 위치 서비스 조합으로 동작합니다

반면 membership은 Toss 앱 전용 네이티브 브릿지 API를 씁니다:

  • billcorea-membership/src/features/location/locationPermission.ts:5에서 getCurrentLocation.getPermission()
  • billcorea-membership/src/features/location/locationPermission.ts:11에서 getCurrentLocation.openPermissionDialog()
  • billcorea-membership/src/features/location/locationPermission.ts:34에서 getCurrentLocation(…)

그리고 지금 membership에는 이 가드도 있습니다:

  • billcorea-membership/src/MemberCardDetail.tsx:5
  • Toss 앱이 아니면 아예 진행하지 않도록 막고 있습니다

즉, 왜 jeju는 되고 membership은 안 되냐면:

  • jeju는 브라우저 위치 API라서 AVD/Chrome 환경에서도 동작할 수 있음
  • membership은 Toss 앱 런타임의 위치 브릿지라서, 같은 AVD라도 Toss 앱 안에서 돌아야 함
  • 브라우저/일반 에뮬레이터 화면에서 보면 membership 쪽은 정상 권한 플로우가 아닙니다

결론:

  • AVD 자체가 “무조건 안 된다”는 건 아닙니다
  • 하지만 membership은 TossApp 런타임 + OS 위치 서비스 + 에뮬레이터 위치 주입이 모두 맞아야 합니다
  • jeju는 그보다 훨씬 관대한 브라우저 geolocation 기반이라 더 잘 되는 것처럼 보일 수 있습니다

지금 상태에서 가장 가능성 높은 원인:

  1. membership을 Toss 앱이 아닌 브라우저/일반 미리보기로 보고 있음
  2. Toss 앱 안에서 돌더라도 AVD에 위치가 주입되지 않았거나 위치 서비스가 꺼져 있음
  3. Toss 브릿지 위치 권한은 잡혔지만 에뮬레이터 위치 공급이 없어 실제 좌표가 안 내려옴

원하면 다음에는 제가 membership에도 jeju처럼 브라우저 fallback을 넣어서, Toss 앱 밖에서는 navigator.geolocation으로라도 위치를 잡게 바꿔드릴 수 있습니다.

appName (선택)

billcorea-jeju( 출시 완료) billcorea-membership (작업중, 테스트 버전은 출시됨)

안녕하세요 :slight_smile:
getCurrentLocation 를 사용중이신걸까요 ?
사용 전 권한 동의가 필요해요.
관련 가이드 전달 드립니다 :slight_smile:

늦어지만 말씀 감사합니다.
위치 확인 해서 정리 하는 방법은 확인 했습니다.