feat: 푸시 알림·딥링크 + 디바이스 등록 + 회원 탈퇴 화면 + 알림 읽음 수정#40
Conversation
디바이스 등록/해제 엔드포인트(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" 스크린샷 추가.
There was a problem hiding this comment.
💡 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".
| case .perspective: | ||
| // 관점(댓글) 단독 진입로는 Chat 모듈에 perspectiveId 기반 진입 추가 후 연결. | ||
| return .none |
There was a problem hiding this comment.
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 👍 / 👎.
| static func broadcast(_ deeplink: PickeDeeplink) { | ||
| UserDefaults.standard.set(deeplink.encoded, forKey: pendingKey) |
There was a problem hiding this comment.
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 👍 / 👎.
요약
✨ 기능
api/v1/devices등록/해제,DeviceUseCase·DeviceRepository·DeviceTokenStorage, DI 등록perspectiveId추가WithdrawReasonFeature)으로 분리, 상단 뒤로가기 네비게이션 바, 로그아웃/탈퇴 시 디바이스 토큰 해제🐛 버그 수정
.post→.patch. 서버가 PATCH 만 받아 "모두 읽음"이 반영되지 않고 미읽음 빨간점이 다시 표시되던 문제 해결📄 문서·기타
테스트 플랜