Skip to content

feat: 푸시 알림·딥링크 + 디바이스 등록 + 회원 탈퇴 화면 + 알림 읽음 수정#40

Merged
Roy-wonji merged 7 commits into
developfrom
feature/notification
Jun 11, 2026
Merged

feat: 푸시 알림·딥링크 + 디바이스 등록 + 회원 탈퇴 화면 + 알림 읽음 수정#40
Roy-wonji merged 7 commits into
developfrom
feature/notification

Conversation

@Roy-wonji

Copy link
Copy Markdown
Contributor

요약

✨ 기능

  • 디바이스 토큰 등록 API 계층api/v1/devices 등록/해제, DeviceUseCase·DeviceRepository·DeviceTokenStorage, DI 등록
  • APNs 푸시 알림 수신 + 딥링크 라우팅 — 푸시 권한·토큰 수신 후 서버 등록, 알림 탭 시 페이로드→딥링크 변환해 배틀 상세 진입, 콜드 스타트 대기 딥링크 처리, 알림 perspectiveId 추가
  • 회원 탈퇴 화면 분리 — 설정 내 팝업을 탈퇴 사유 입력 화면(WithdrawReasonFeature)으로 분리, 상단 뒤로가기 네비게이션 바, 로그아웃/탈퇴 시 디바이스 토큰 해제

🐛 버그 수정

  • 알림 읽음 처리 HTTP 메서드 — read/read-all .post.patch. 서버가 PATCH 만 받아 "모두 읽음"이 반영되지 않고 미읽음 빨간점이 다시 표시되던 문제 해결

📄 문서·기타

  • README 기능·구조 설명 갱신
  • 로그인 로고 에셋 교체
  • fastlane App Store 메타데이터·스크린샷 추가

테스트 플랜

  • 알림 → 모두 읽음 후 재진입 시 빨간점 미표시
  • 푸시 탭 → 배틀 상세 진입
  • 설정 → 탈퇴 화면 진입/뒤로가기/탈퇴 완료 → 로그인 화면
  • 로그인 후 디바이스 토큰 서버 등록

디바이스 등록/해제 엔드포인트(api/v1/devices)와 DeviceUseCase·Repository,
DeviceTokenStorage 추가. PieckeDomain.device 및 DI 등록 포함.
푸시 권한 요청·APNs 토큰 수신 후 서버 등록(PushTokenStore), 알림 탭 시
페이로드를 딥링크로 변환해 배틀 상세로 진입. 콜드 스타트 대기 딥링크 처리 및
알림 perspectiveId 추가로 관점(댓글) 이동 기반 마련.
설정 내 탈퇴 팝업을 탈퇴 사유 입력 화면(WithdrawReasonFeature)으로 분리하고
상단 뒤로가기 네비게이션 바 적용. 로그아웃/탈퇴 시 디바이스 토큰을 서버에서 해제.
read/read-all 요청을 .post 에서 .patch 로 변경. 서버가 PATCH 만 받아
모두 읽음이 반영되지 않고 미읽음 빨간점이 다시 표시되던 문제 해결.
알림·무료충전·행동분석 기능과 마이페이지 설명 보강, 모듈 구조 목록 갱신.
loginLogo imageset 의 PicK.svg 를 픽케 로고.svg 로 교체.
fastlane deliver 용 한국어 메타데이터와 iPhone 6.5" 스크린샷 추가.
@Roy-wonji Roy-wonji added ✨ 기능추가 새로운 기능 추가 🐛 버그 버그 수정 📄 문서작업 문서 작성 및 수정 ⚙️ 환경설정 프로젝트 설정 labels Jun 11, 2026
@Roy-wonji Roy-wonji merged commit eabef71 into develop Jun 11, 2026
2 of 3 checks passed
@Roy-wonji Roy-wonji deleted the feature/notification branch June 11, 2026 08:16

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1945b9af7d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +200 to +202
case .perspective:
// 관점(댓글) 단독 진입로는 Chat 모듈에 perspectiveId 기반 진입 추가 후 연결.
return .none

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Handle perspective deeplinks instead of dropping them

When a COMMENT_LIKE or NEW_COMMENT item is tapped, NotificationFeature now parses it into .perspective(...) and posts .pickeDeeplink, but the app-level router reaches this branch and returns .none. In that scenario the notification may be marked read, but the user never leaves the notification list, so comment-related push/in-app notification deep links are effectively broken.

Useful? React with 👍 / 👎.

Comment on lines +27 to +28
static func broadcast(_ deeplink: PickeDeeplink) {
UserDefaults.standard.set(deeplink.encoded, forKey: pendingKey)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Clear pending deeplinks after warm routing

broadcast persists every push deeplink before posting it, but when the app is already in mainTab the notification observer routes it immediately and nothing removes PickePendingDeeplink until a future .completeMainTabTransition. After a warm/background push tap succeeds, the same old link can therefore be replayed on a later logout/login or root transition; clear the pending value once .deeplinkReceived is handled, or only persist when the app cannot route yet.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚙️ 환경설정 프로젝트 설정 ✨ 기능추가 새로운 기능 추가 🐛 버그 버그 수정 📄 문서작업 문서 작성 및 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant