Skip to content

화면별 로깅 · 1.4.2 - #29

Merged
dongglehada merged 2 commits into
mainfrom
feat/screen-logging
Oct 3, 2026
Merged

dongglehada merged 2 commits into
mainfrom
feat/screen-logging

Conversation

@dongglehada

Copy link
Copy Markdown
Contributor

왜

GA4의 "페이지 및 화면" 보고서가 쓸모가 없었습니다. Firebase는 화면 전환을 자동으로 잡아주지만 그건 UIKit 뷰 컨트롤러가 뜰 때라, SwiftUI인 이 앱에서는 아무것도 안 걸립니다.

9월 한 달 보고서에 잡힌 건 둘뿐이었습니다 — UIColorPickerViewController(설정의 색 선택기)와 PlatformAlertController(알림창). 시스템이 UIKit으로 띄워주는 것만 잡힌 겁니다. 전체 이벤트의 81%가 화면 이름 없이 (not set)으로 묶였고, 그 보고서의 "조회수 73회"는 화면 조회수가 아니라 색 선택기와 알림창이 뜬 횟수였습니다.

무엇을

screen_view를 앱이 직접 보냅니다. 이름을 우리가 지은 게 아닙니다 — Firebase 예약어라 이 이름과 firebase_screen 파라미터로 보내야 그 보고서에 들어갑니다. 다른 이름이면 맞춤 이벤트가 되고 보고서는 계속 빕니다. 덕분에 맞춤 측정기준으로 등록할 일도 없습니다.

세는 화면은 Shared/AnalyticsScreen.swift에 열하나로 열거했습니다. 달력 홈, 하루 페이지, 설정, 캘린더 목록, 카테고리 목록, 검색, 달 고르기, 카테고리 편집, 캘린더 편집, 메모, 날짜·시간 고르기.

사람이 "다른 곳에 왔다"고 느끼는 자리만 셉니다. 확인창과 길게 누르기 메뉴, 안내 오버레이, 달력 아래 입력창은 세지 않습니다 — 머물지 않거나, 이미 더 자세한 이벤트가 있거나, 화면의 일부입니다.

onAppear이 아니라 task에 걸었습니다. 둘 다 "뜰 때" 불리지만 onAppear은 같은 화면이 다시 그려지는 과정에서 여러 번 불릴 수 있습니다.

기존 로깅 점검

정의된 이벤트 21개를 호출부와 전수로 맞춰봤습니다. 죽은 이벤트는 없습니다. analytics_identity만 호출부가 Analytics.identify() 안이라 눈에 안 띄는 자리에 있습니다.

겹쳐 보이는 것

screen_view(day)와 day_opened는 하는 일이 다릅니다. 앞은 "하루 페이지를 얼마나 자주 보나"(다른 화면과 나란히 비교 가능), 뒤는 "어느 문으로 들어왔나"(from)입니다. docs/ANALYTICS.md에 적어뒀습니다.

확인

  • App·MoscoWidget 두 스킴 모두 클린 빌드 통과
  • 테스트 203개 통과 (화면 이름 규칙·예약어 테스트 4개 추가)
  • tools/artifact_check.sh 통과
  • 시뮬레이터에서 실제로 쏘는 것 확인 — 달력 열고 하루 페이지로 들어가니 screen_view ["firebase_screen": "calendar"] → ["firebase_screen": "day"] 순으로 찍혔습니다

🤖 Generated with Claude Code

dongglehada and others added 2 commits October 3, 2026 15:41
GA4의 "페이지 및 화면" 보고서가 쓸모가 없었다. Firebase는 화면 전환을 자동으로
잡아주지만 그건 UIKit 뷰 컨트롤러가 뜰 때다 — 이 앱은 SwiftUI라 아무것도 안
걸린다. 9월 한 달 보고서에 잡힌 것은 `UIColorPickerViewController`(설정의 색
선택기)와 `PlatformAlertController`(알림창) 둘뿐이었고, 전체 이벤트의 81%가
화면 이름 없이 `(not set)`으로 묶였다.

`screen_view`를 앱이 직접 보낸다. 이름을 우리가 지은 게 아니라 Firebase가
예약해 둔 것이다 — 이 이름과 `firebase_screen` 파라미터로 보내야 그 보고서에
들어간다. 다른 이름이면 맞춤 이벤트가 되고 보고서는 계속 빈다. 그래서 맞춤
측정기준으로 등록할 일도 없다.

세는 화면은 `Shared/AnalyticsScreen.swift`에 열거했다. **사람이 "다른 곳에
왔다"고 느끼는 자리만** 센다 — 전체를 덮는 시트와 밀려 들어오는 페이지 열하나다.
확인창과 길게 누르기 메뉴, 안내 오버레이, 달력 아래 입력창은 세지 않는다.

`onAppear`이 아니라 `task`에 건다. 둘 다 "뜰 때" 불리지만 `onAppear`은 같은
화면이 다시 그려지는 과정에서 여러 번 불릴 수 있다.

**기존 이벤트도 전수로 맞춰봤다.** 정의돼 있는데 안 보내는 이벤트는 없었다
(`analytics_identity`는 `Analytics.identify()` 안에서 나간다).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
화면별 로깅만 들어갔다. 사용자 눈에는 아무 일도 일어나지 않으므로 PATCH다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dongglehada
dongglehada merged commit b477277 into main Oct 3, 2026
1 check passed
@dongglehada
dongglehada deleted the feat/screen-logging branch October 3, 2026 06:46
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