← 블로그
#만든 사람 노트#모바일

「돌아가기」를 두 번 고쳤습니다

꿈꾸는곰도리 운영자 · 2026-09-24 · 약 5분 읽기
공유XFacebook

9월 8일에 신고가 하나 들어왔습니다. 개인정보처리방침 화면에서 「돌아가기」가 안 된다고요. 원인을 찾아 고치고 배포했습니다.

이틀 뒤, 같은 화면에서 같은 신고가 다시 들어왔습니다. 문장까지 똑같았어요. 「돌아가기 버튼 눌러도 돌아가기가 안 돼.」

처음엔 8일 조치가 실패한 줄 알았습니다. 아니었어요. 첫 번째 관문이 열리자 그 뒤에 있던 두 번째 관문이 드러난 것이었고, 두 결함은 원인이 아무 상관도 없었습니다.

첫 번째 — 버튼이 눌리지 않았다

아이폰은 화면 꼭대기에 시계·신호·배터리를 그립니다. 그 자리에 앱이 뭘 그려 넣으면 보이기는 하는데 눌리지 않습니다. 그 영역의 터치는 운영체제가 가져가거든요.

주소를 갖고 통째로 열리는 화면들이 그 자리를 비우지 않고 있었습니다. 「돌아가기」 버튼 윗선이 화면 맨 위에서 19.8px 지점에 있었는데, 상태바가 덮는 높이는 59px입니다. 버튼이 통째로 그 안에 들어가 있었어요.

개인정보처리방침 화면 상단을 아이폰 안전영역 인셋(위 59px)을 넣고 재현한 전후 비교. 빨간 빗금이 상태바가 덮는 자리다. 위(고치기 전)는 「돌아가기」 버튼과 시행일 선택 상자가 그 빗금 안에 통째로 들어가 있고, 아래(고친 뒤)는 빗금 밖으로 내려와 있다
빨간 빗금이 상태바가 덮는 자리입니다. 위가 고치기 전 — 「돌아가기」와 시행일 선택 상자가 빗금 안에 통째로 들어가 있습니다. 아래가 고친 뒤.

점검해 보니 주소를 가진 화면 23개 중 21개가 그 자리를 비우지 않고 있었고, 그중 12곳에서는 실제로 나갈 방법이 없었습니다.

여기서 한 가지가 겹칩니다. 홈 화면에 추가해서 쓰는 앱에는 주소창이 없습니다. 브라우저라면 주소창의 뒤로 버튼이라도 있는데, 설치형 앱에서는 화면 안의 그 버튼이 유일한 출구예요. 눌리지 않으면 갇힙니다.

이 결함이 몇 달을 간 이유도 거기 있습니다. 브라우저로 열면 주소창이 화면을 정직하게 줄여 주기 때문에 재현되지 않아요. 만드는 쪽은 브라우저로 보고, 갇히는 쪽은 설치해서 쓰는 사람입니다.

23개를 고쳐서 배포했습니다. 버튼이 눌리게 됐어요.

두 번째 — 눌리는데 아무 일이 없었다

이제 버튼은 눌립니다. 눌리는데 화면이 그대로입니다.

버튼 안에 있던 코드는 「브라우저 기록을 한 칸 되감아라」였습니다. 「뒤로 가라」가 아니에요. 이 둘은 대개 같은 결과를 내지만, 되감을 칸이 없으면 갈라집니다. 그때는 예외도 오류도 없이 그냥 아무 일도 일어나지 않습니다. 조용해서 자동 검사로도 안 잡혀요.

되감을 칸이 없는 상황이 드물 줄 알았는데, 세어 보니 흔했습니다.

어떻게 들어왔나왜 되감을 칸이 없나
앱 안에서 연 새 탭「개인정보 처리 안내 자세히」 같은 링크를 일부러 새 탭으로 엽니다. 쓰던 글을 잃지 않으려고요. 새 탭의 기록은 한 칸뿐입니다
검색 결과·북마크·공유 링크우리 앱 안에서 이동한 적이 없습니다
설치형 앱을 그 주소에서 시작시작점이 곧 첫 칸이고, 주소창도 없습니다

반대로 마이페이지나 랜딩 푸터를 거쳐 들어오면 칸이 있어서 잘 됩니다. 화면을 만드는 사람은 앱 안에서 눌러 보니까 늘 멀쩡해 보였어요. 첫 번째 결함과 재현되지 않는 이유가 달랐을 뿐, 개발 중에는 안 보인다는 점은 똑같았습니다.

「기록이 몇 칸인가」로는 못 가릅니다

고칠 때 처음 떠올린 방법은 «브라우저 기록이 한 칸뿐이면 홈으로 보낸다»였습니다. 이건 틀립니다.

구글 검색 결과를 거쳐 들어온 탭은 기록이 이미 두 칸이에요. 검색 결과 페이지가 한 칸을 차지하고 있으니까요. 그 상태에서 되감으면 우리 사이트 밖으로 나갑니다. 사용자는 「돌아가기」를 눌렀는데 구글로 튕겨 나가는 거죠.

그래서 «기록이 몇 칸인가»가 아니라 «우리 앱 안에서 이동한 적이 있는가»를 봐야 합니다. 라우터가 그 값을 따로 적어 두고 있어서, 그걸 읽어 판단하도록 바꿨습니다.

이 값은 라우터 내부 구현이라 언제든 형태가 바뀔 수 있습니다. 그래서 틀리는 방향을 골라 뒀어요. 값을 못 읽으면 「돌아갈 자리가 없다」로 읽고 홈으로 내보냅니다. 어느 쪽으로 틀려도 버튼은 무언가를 합니다. 반대로 「자리가 있다」로 잘못 읽으면 아무 일도 안 하는 원래 결함으로 되돌아가고요.

라벨도 같이 바꿨습니다. 돌아갈 자리가 없는데 「돌아가기」라고 적어 놓고 홈으로 보내면 그건 그것대로 거짓말이에요. 자리가 없으면 로그인 상태에 따라 「앱으로」나 「홈으로」로 글자가 바뀝니다.

남은 것

두 결함을 각각 기계 검사로 막아 뒀습니다. 하나는 「그 버튼이 눌리는 자리에 있는가」를 보고, 다른 하나는 「눌렀을 때 나가는가」를 봅니다. 같은 버튼의 두 관문이라 한자리에 뒀어요.

그런데 정작 오래 남은 건 검사가 아니라 이겁니다. 사용자가 보내는 한 문장은 증상이지 원인이 아닙니다.

「돌아가기가 안 돼」라는 같은 여섯 글자가 이틀 간격으로 두 번 왔고, 하나는 터치가 운영체제에 먹히는 문제였고 다른 하나는 기록을 되감을 자리가 없는 문제였습니다. 공통점은 버튼이 화면 위 같은 자리에 있다는 것뿐이에요.

그래서 이제 이 신고가 오면 먼저 묻습니다. 눌리기는 하나요?

글쓴이
꿈꾸는곰도리 운영자
매일 쓰면서, 만들며 겪은 것을 적습니다

일정·건강·가계부·목표를 따로 관리하다 지쳐서, 하나로 잇는 앱을 직접 만들었습니다. 꼼꼬미의 기획부터 개발·운영까지 직접 손대고 있고, 여기 쓰는 글은 대부분 제가 직접 기능을 만들고 매일 써보며 겪은 것에서 나옵니다. 잘 안 됐던 것도 그대로 적습니다.

함께 읽으면 좋은 글

블로그
키보드가 올라오면 저장 버튼이 사라졌습니다
모바일에서 입력 창 아래 버튼이 화면 밖으로 밀려나는 결함을 전수 점검한 기록입니다. 창 37개를 실제 폰 크기로 띄워 세어보니 18개가 같은 상태였고, 원인은 화면마다 다른 실수가 아니라 높이를 재는 자가 두 개였던 구조였습니다.
블로그
목표 경험치가 사라졌고, 돌려드릴 방법이 없었습니다
브라우저에만 저장해 둔 값은 기기를 바꾸면 사라집니다. 목표 경험치와 배지가 그랬어요. 몇 달 동안 아무도 몰랐던 이유와, 그 뒤로 브라우저에 값을 남기는 파일 60개를 전부 목록으로 만든 기록입니다.
사용 가이드
졸업까지 몇 학점 남았는지, 매 학기 다시 세고 있다면
수강 신청 때마다 성적표를 열어 학점을 다시 더하고 있다면, 세는 방식이 아니라 남겨두는 방식을 바꿀 때입니다. 졸업 요건 계산이 매번 처음부터 시작되는 이유와, 한 번만 적어두면 되는 구조를 정리했습니다.