feat: GA 셋팅 - [TWI-76]#284
Conversation
- draft로 올릴 예정이라 Event는 추후 추가 예정
- CoreAnalytics에서 Feature책임을 갖고있던 기존 구조에서 Evetn를 protocol로 추상화 - logEvent 클로저로 통합
- CoreAnalytics에서 Feature책임을 갖고있던 기존 구조에서 Evetn를 protocol로 추상화 - logEvent 클로저로 통합
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 Walkthrough워크스루이 PR은 Google Analytics를 Keepiluv iOS 앱에 완전히 통합합니다. Firebase Analytics를 백엔드로 하는 재사용 가능한 분석 클라이언트를 생성하고, 인증, 홈 화면, 목표 상세보기, 온보딩, 통계 등 주요 기능에서 사용자 액션을 추적합니다. 변경 사항Analytics 코어 모듈 및 통합
Feature별 Analytics 이벤트 정의 및 로깅
🎯 코드 리뷰 난이도🎯 3 (중간) | ⏱️ ~25분 관련 PR
제안 라벨
제안 검토자
✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Comment |
|
@coderabbitai summary |
✅ Actions performedSummary regeneration triggered. |
뭔데 이게 |
|
Tip For best results, initiate chat on the files or code changes.
|
clxxrlove
left a comment
There was a problem hiding this comment.
수고했어 ~~!
코멘트가 필수적인건 아니라 넘겨도 되는데
슬랙에 가은이한테 태그 관련해서 요청한 게 있는데 그거 대답 듣고 이후 마무리 하면 될듯
| case let .uploaded(goalId, targetDate): | ||
| [ | ||
| "goal_id": "\(goalId)", | ||
| "targetDate": targetDate |
| public var analyticsType: String { | ||
| switch self { | ||
| case .partnerConnected: | ||
| "partner_connected" | ||
| case .poke: | ||
| "poke" | ||
| case .goalCompleted: | ||
| "goal_completed" | ||
| case .reaction: | ||
| "reaction" | ||
| case .dailyGoalAchieved: | ||
| "daily_goal_achieved" | ||
| case .goalEnded: | ||
| "goal_ended" | ||
| case .marketing: | ||
| "marketing" | ||
| } | ||
| } |
There was a problem hiding this comment.
P4. 이건 개인적으로 이쪽 코어에 있는거보다는, MainTab쪽에서 매핑하는게 더 나을 거 같아 (Analytics랑 관심사가 다르니까)
// MainTabAnalyticsEvent.swift에서
case openedByPush(deepLink: NotificationDeepLink)
var parameters: [String: Any]? {
case let .openedByPush(deepLink):
let type: String
switch deepLink {
case .poke: type = "poke"
...
}
return ["type": type]
}라던가, extension으로 추가한다거나 하는게 좋을듯
| /// analyticsClient.logEvent(event) | ||
| /// ``` | ||
| public struct AnalyticsClient { | ||
| public var setUserProfile: ((id: Int64?, name: String?)) -> Void |
There was a problem hiding this comment.
P5. 여기 파라미터는 타입 추론이나 이런 부분도 있고 해서 struct로 만드는게 어때?
* feat: DomainCommon, FeatureCommon 모듈 생성 - #278 * refactor: 공통 타입들 DomainCommon, FeatureCommon으로 책임 분리 - #278 * refactor: common 분리에 영향받는 파일들 수정 - #278 * refactor: SharedDesignSystem에 있던 임시 TXItem 구현체 Feature에 맞게 분리 - #278 * refactor: TXItem 구현체 Feature분리에 따른 영향 범위 수정 - #278 * feat: CoreAnalytics 모듈 추가 - #281 * feat: AnalyticsClient, Event 구현 - #281 - draft로 올릴 예정이라 Event는 추후 추가 예정 * feat: 유져 로그인/로그아웃 시 Analytics user setting 하도록 구현 - #281 * feat: release일 때 analytics 동작하도록 구현 - #281 * refactor: CoreAnalytics 구조 개선 - #281 - CoreAnalytics에서 Feature책임을 갖고있던 기존 구조에서 Evetn를 protocol로 추상화 - logEvent 클로저로 통합 * feat: Auth 이벤트 심기 - #281 * feat: Onboarding 이벤트 심기 - #281 * feat: Home 이벤트 심기 - #281 * feat: MainTab 이벤트 심기 - #281 * feat: MakeGoal 이벤트 심기 - #281 * feat: GoalDetail 이벤트 심기 - #281 * feat: ProofPhoto 이벤트 심기 - #281 * feat: Stats 이벤트 심기 - #281 * docs: 누락된 주석 추가 - #281 * fix: 리뷰 반영 - #284 * feat: 추가 요청사항 인증샷 이벤트 심기 - #281 * fix: home 목표 생성 선택 이벤트 네이밍 수정 - #281 --------- Co-authored-by: jihun <jihun332@gmai.com>
🔗 관련 이슈
📙 작업 내역
💬 추가 설명 or 리뷰 포인트 (선택)
5.9