왜 진입하자마자 위치 권한을 묻지 않게 바꿨을까? power-saver 출시 후 수정기
1. 문제 정의: 날씨를 보기 전에 권한부터 물어도 될까?
1. 문제 정의: 날씨를 보기 전에 권한부터 물어도 될까?
날씨를 확인하려고 미니앱에 들어왔는데 첫 화면부터 위치 정보 권한을 요청하면, 사용자는 기능을 이용하기도 전에 선택해야 합니다. power-saver는 이 진입 흐름을 단순하게 만들고, 권한을 허용하지 않아도 먼저 날씨를 확인할 수 있도록 하는 데서 출발했습니다.
제품이 해결하려는 질문은 하나였습니다. “지금 바로 위치 정보를 허용하지 않아도 날씨를 확인할 수 있을까?”
기존에는 미니앱에 진입하자마자 `getCurrentLocation`이 실행되면서 위치 정보 권한 동의 바텀시트가 나타났습니다. 토스 심사 과정에서 이 흐름이 문제로 확인됐고, 위치 조회를 자동 실행 방식에서 사용자 버튼 실행 방식으로 변경했습니다.
📌 먼저 보는 핵심 답변
- power-saver는 앱인토스에서 날씨 예보를 확인할 수 있도록 만든 미니앱입니다.
- 현재는 기본 예보를 제공하고, 사용자가 버튼을 눌렀을 때 현재 위치 기반 날씨를 불러옵니다.
- 진입 즉시 노출되던 위치 권한 요청과 탭 이동 중 불필요한 팝업은 수정했습니다.

2. 핵심 결정과 현재 구현 범위
진입 시 자동 위치 조회 제거
현재 power-saver는 앱에 진입할 때 `getCurrentLocation`을 자동으로 호출하지 않습니다. 사용자가 기능을 선택하기 전에 권한 요청이 나타나는 상황을 피하기 위해서입니다.
기본 예보 우선 제공
앱에 들어오면 위치 권한을 허용하지 않아도 기본 예보 데이터를 먼저 확인할 수 있습니다. 첫 화면이 권한 요청으로 막히지 않도록 위치 정보가 없어도 이용할 수 있는 화면과 위치 정보가 필요한 기능을 분리했습니다.
버튼 선택 이후 위치 권한 요청
현재 위치의 날씨가 필요할 때 사용자가 ‘현재 위치 날씨 불러오기’ 버튼을 직접 누르면 위치 조회와 권한 요청이 시작됩니다. 위치 권한을 앱 진입의 전제 조건으로 두지 않고, 사용자의 기능 사용 의도가 확인된 뒤 요청하는 방식입니다.
탭 이동 중 불필요한 팝업 제거
날씨 화면을 확인하거나 다른 탭으로 이동하는 동안 권한 관련 팝업이 반복해서 나타나지 않도록 흐름을 정리했습니다. 이번 수정의 범위는 새로운 기능을 추가하는 것보다 진입·권한·상태 처리를 실제 사용 순서에 맞게 조정하는 데 있습니다.

3. 사용 시나리오로 본 화면 흐름
앱을 처음 열었을 때 바로 위치 권한 동의 화면이 나타나지 않습니다. 먼저 기본 예보 화면이 표시되어 사용자는 권한을 허용하지 않아도 현재 제공되는 날씨 정보를 확인할 수 있어요. 앱에 진입하자마자 권한을 요구하던 이전 흐름을 바꾼 핵심 이유도 여기에 있습니다. 기능을 확인하기 전에 팝업부터 처리해야 하는 부담을 줄였습니다.
① 앱 진입 — 기본 예보 확인
power-saver를 실행하면 위치 정보를 요청하는 바텀시트가 자동으로 열리지 않습니다. 화면에 표시된 기본 예보를 먼저 살펴보고, 앱이 어떤 정보를 제공하는지 바로 이해할 수 있습니다. 제출용 화면에서도 진입 직후 권한 요청 없이 예보 화면을 확인하는 흐름을 기준으로 구성했습니다.
② 현재 위치 날씨가 필요할 때 — 버튼 직접 선택
사용자가 자신의 위치를 기준으로 날씨를 확인하고 싶다면 ‘현재 위치 날씨 불러오기’ 버튼을 누릅니다. 위치 권한 요청은 이 버튼을 직접 선택한 시점에만 실행됩니다. 사용 목적이 분명해진 뒤 권한을 묻기 때문에, 앱을 열자마자 갑작스럽게 동의 화면을 마주치는 상황을 피할 수 있어요.
③ 권한 요청 이후 — 상태에 맞는 안내 확인
버튼을 누른 뒤에는 현재 상태에 맞춰 버튼 문구와 화면 안내가 달라집니다. 권한 요청 전과 요청 이후의 행동이 구분되어 있어 사용자가 다음에 무엇을 해야 하는지 판단하기 쉽습니다. 위치 기능을 사용하지 않더라도 기본 예보를 확인하는 흐름은 그대로 유지됩니다.
④ 다른 탭으로 이동 — 불필요한 팝업 없이 탐색
탭을 이동할 때마다 위치 권한 팝업이 반복해서 나타나지 않습니다. 필요한 기능을 선택했을 때만 권한 절차가 시작되므로, 기본 예보 확인과 탭 탐색을 방해하지 않아요. 결과적으로 현재 화면 흐름은 진입 → 기본 예보 확인 → 필요할 때 현재 위치 날씨 선택 → 권한 동의 및 상태별 안내 순서로 정리했습니다.
4. 출시 과정에서 확인한 문제와 수정
처음에는 현재 위치의 날씨를 바로 보여주기 위해 미니앱 진입 시 `getCurrentLocation`을 자동 실행했습니다. 그러나 실제 흐름에서는 사용자가 기능을 선택하기 전에 위치 정보 권한 동의 바텀시트가 먼저 나타났습니다.
이 방식은 날씨를 확인하려는 사용자에게 앱의 용도를 충분히 확인하기도 전에 민감한 정보 접근을 요구하는 경험을 만들었습니다. 토스 심사에서도 진입 즉시 권한을 요청하는 흐름이 문제로 지적됐습니다.
수정 방향은 위치 조회 시점을 사용자의 직접 선택 이후로 옮기는 것이었습니다. 미니앱에 진입하면 기본 예보를 먼저 제공하고, 사용자가 ‘현재 위치 날씨 불러오기’ 버튼을 눌렀을 때만 위치 조회와 권한 요청을 실행하도록 바꿨습니다. 탭 이동 중 불필요한 팝업이 다시 나타나지 않도록 관련 흐름도 함께 정리했습니다.
power-saver는 현재 앱인토스 환경에 배포·출시된 상태이며, 기본 예보 우선 제공과 선택형 위치 조회가 반영돼 있습니다.

5. 현재 상태, 다음 계획, 배운 점
지금 상태
power-saver는 개발을 마치고 앱인토스에 배포·출시한 제품입니다. 현재 사용자는 미니앱에 들어오자마자 위치 권한을 허용하지 않아도 기본 예보 데이터를 먼저 확인할 수 있어요. 자신의 위치를 기준으로 날씨를 보고 싶을 때는 ‘현재 위치 날씨 불러오기’ 버튼을 직접 눌러 권한을 요청하도록 바꿨습니다.
이번 수정의 핵심은 기능을 추가하는 것보다 권한을 요청하는 시점과 사용자의 선택권을 분리한 것입니다. 기존에는 진입과 동시에 `getCurrentLocation`이 실행되면서 위치 정보 권한 동의 바텀시트가 바로 노출됐습니다. 이제는 사용자가 위치 기반 기능을 선택했을 때만 권한 요청이 발생합니다. 상태에 따라 버튼 문구도 다르게 보여주고, 탭을 이동할 때 불필요한 팝업이 뜨지 않도록 정리했습니다. 제출용 화면 9장을 기준으로 출시 화면과 적용 범위도 확인했습니다.
다음 계획
현재 별도로 확정된 추가 기능은 없습니다. 우선 출시된 범위 안에서 기본 예보 제공, 위치 기반 날씨 조회, 권한 요청 흐름이 의도한 방식으로 작동하는지 살펴보는 단계입니다. 이후 수정이 필요하다면 새로운 기능을 서둘러 늘리기보다, 실제 사용 흐름에서 혼란을 주는 지점을 먼저 확인할 예정입니다.
배운 점
위치 정보처럼 민감하게 느껴질 수 있는 권한은 필요한 순간에 요청하는 것만으로도 첫 화면의 인상이 달라집니다. 기능을 바로 실행하는 편이 개발자에게는 간단해 보여도, 사용자는 왜 권한이 필요한지 알기 어려울 수 있어요. 이번 수정은 권한 요청을 늦춘 것이 아니라, 사용자의 행동과 연결한 변경이었습니다. 여러분은 날씨 앱에 들어갔을 때 어떤 시점에 위치 권한을 요청받는 방식이 가장 자연스럽다고 느끼시나요?

첨부한 실제 화면
- 이미지 1: 01.png (실제 화면 1)
- 이미지 2: 02.png (실제 화면 2)
- 이미지 3: 03.png (실제 화면 3)
- 이미지 4: 04.png (실제 화면 4)
❓ 자주 묻는 질문
Q. power-saver는 어떻게 사용하나요?
A. 앱에 진입하면 기본 예보를 확인할 수 있습니다. 현재 위치의 날씨가 필요할 때 ‘현재 위치 날씨 불러오기’ 버튼을 직접 누르면 위치 권한 요청이 진행됩니다.
Q. 앱을 처음 열자마자 위치 권한을 허용해야 하나요?
A. 아닙니다. 현재는 진입 시 위치 정보를 자동으로 요청하지 않고, 사용자가 현재 위치 날씨 조회 버튼을 눌렀을 때만 권한을 요청합니다.
Q. 위치 권한을 허용하지 않아도 예보를 볼 수 있나요?
A. 진입 시 기본 예보 데이터가 제공되도록 구성되어 있어, 현재 위치 조회를 실행하지 않고도 기본 예보 화면을 확인할 수 있습니다.
Q. 현재 power-saver는 출시된 상태인가요?
A. power-saver는 개발을 마치고 앱인토스에 배포·출시된 제품입니다. 앱인토스 콘솔에서 배포 API 키를 발급하고 관리할 수 있습니다.
이 개발기를 참고할 때
이 글은 제가 직접 만든 제품의 개발 과정을 정직하게 공유하는 기록입니다.
- 스크린샷과 설명은 작성 시점의 실제 상태 기준이며, 이후 업데이트로 달라질 수 있습니다.
- "다음 계획"으로 표시한 기능은 아직 완성된 기능이 아닙니다.
- 참고하거나 인용할 때는 이 글의 URL을 출처로 남겨주세요.
- 궁금한 점이나 피드백은 댓글로 남겨주시면 다음 개발과 다음 글에 반영하겠습니다.
댓글 0개
- 첫 댓글을 남겨보세요.