Skip to content

[WEB-USER][FIX]: QR 전용 안내 화면에서 위치 권한 자동 요청 제외 - #179

Merged
IceMilk1996 merged 1 commit into
mainfrom
staging
Sep 3, 2026
Merged

[WEB-USER][FIX]: QR 전용 안내 화면에서 위치 권한 자동 요청 제외#179
IceMilk1996 merged 1 commit into
mainfrom
staging

Conversation

@IceMilk1996

Copy link
Copy Markdown
Contributor

📋 요약

/partner, /app 같은 QR 직진입 안내 화면에서 위치 권한 자동 요청을 하지 않도록 합니다. 이 화면들은 위치를 전혀 쓰지 않는데도 진입하자마자 권한 팝업이 떴습니다.

✨ 주요 변경사항

  • [WEB-USER] 위치 자동 요청 제외 경로(/partner, /app 및 그 하위) 도입
  • [WEB-USER] 자동 위치 요청을 브릿지 등록 이펙트에서 분리해 pathname에 의존하는 별도 이펙트로 이동

🧪 테스트 계획

  • 위치 권한 미결정 상태(시크릿 창)에서 /partner 진입 → 위치 팝업이 뜨지 않는지
  • /app, /app/android도 팝업이 뜨지 않는지
  • 같은 세션에서 /partner → 홈(/) 이동 → 이때는 위치 팝업이 뜨는지
  • 홈에 바로 진입했을 때 기존과 동일하게 위치 팝업이 뜨는지 (회귀 확인)
  • 웹뷰(앱)에서 화면 이동 시 위치 요청 동작 (아래 참고 사항)

📎 참고 사항

왜 필요했는가 — 방문자가 페이지 내용을 보기도 전에 맥락 없는 팝업을 만나면 대부분 거부합니다. 브라우저는 그 거부를 기억하기 때문에, 정작 위치가 필요한 지도·검색 화면에서는 다시 물을 수조차 없게 됩니다. QR로 처음 서비스를 접하는 사장님·신규 방문자가 이 경로로 들어옵니다.

왜 마운트 1회 이펙트가 아니라 pathname 의존 이펙트인가AuthProvider는 라우트가 바뀌어도 언마운트되지 않습니다. 마운트 1회 이펙트에 제외 조건만 넣으면, /partner로 처음 들어온 세션은 이후 홈이나 지도로 이동해도 위치를 영영 요청하지 않게 됩니다.

경로 판정pathname === base || startsWith(base + "/"). /app은 하위에 /app/android가 있어서 정확히 일치만으로는 부족합니다.

알려진 트레이드오프pathname에 의존하게 되면서 웹뷰 환경에서는 라우트가 바뀔 때마다 requestLocationFromWebView()가 Flutter로 나갑니다(이전에는 마운트 시 1회). "이미 요청함" 플래그가 없어 중복을 막는 장치도 없습니다. 제외 경로를 거쳐 온 사용자가 위치를 받는 쪽을 우선한 선택입니다. 자동 요청은 userInitiated=false라 거부해도 모달은 뜨지 않습니다. 앱에서 화면 이동 시 위치 사용 표시가 반복돼 거슬리는 수준이면 세션당 1회 제한 플래그를 후속으로 넣을 예정입니다.

스테이징 확인 결과 (web-user/staging-v0.0.233, 배포 성공)

  • https://staging.picakes.com/ 200, /partner 200
  • /app (Android UA) → 302 → /app/android 200
  • tsc --noEmit 통과 (오류 0건)
  • 권한 팝업 동작 자체는 브라우저 UI라 자동 검증 불가 — 위 테스트 계획으로 수동 확인 필요

/partner, /app 같은 QR 직진입 화면은 위치를 전혀 쓰지 않는데도 진입하자마자
위치 권한 팝업이 떴습니다. 방문자는 페이지 내용을 보기도 전에 맥락 없는 팝업을
만나 대부분 거부하고, 브라우저가 그 거부를 기억하기 때문에 정작 위치가 필요한
지도·검색 화면에서는 다시 물을 수조차 없게 됩니다.

- 제외 경로를 `PATHS` 상수로 두고 `pathname === base || startsWith(base + "/")`로
  판정. `/app`은 하위에 `/app/android`가 있어 정확히 일치만으로는 부족함
- 자동 위치 요청을 브릿지 등록 이펙트에서 떼어내 pathname에 의존하는 별도
  이펙트로 분리. AuthProvider는 라우트가 바뀌어도 언마운트되지 않아서,
  마운트 1회 이펙트에 두면 /partner로 처음 들어온 세션은 이후 홈이나 지도로
  이동해도 위치를 영영 요청하지 않게 됨
- 웹뷰 환경에서는 라우트가 바뀔 때마다 Flutter에 위치를 다시 요청하게 됨.
  세션 내 1회로 제한하는 것보다, 제외 경로를 거쳐 온 사용자가 위치를 받는 쪽을
  우선했음 (자동 요청은 userInitiated=false라 거부해도 모달이 뜨지 않음)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016ScM4roFnvWcR1hmDuw7Zi
@IceMilk1996 IceMilk1996 self-assigned this Sep 3, 2026
@IceMilk1996
IceMilk1996 merged commit f4048b6 into main Sep 3, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant