피드로 돌아가기
Dev.toFrontend
원문 읽기
추상화 라이브러리 배제 및 Native 직접 제어로 Edge Case 완벽 대응
Push notifications, the iceberg under one feature
AI 요약
Context
기존 Push Notification 라이브러리들이 해결하지 못한 OS별 Edge Case와 비결정적 실패 모드로 인한 사용자 경험 저하 발생. 단순 API 호출로 인식되는 기능 이면에 플랫폼 라이프사이클, 권한 모델, 토큰 상태 관리의 복잡성이 공존하는 구조적 한계 직면.
Technical Solution
- Notifee, OneSignal 등 추상화 레이어를 제거하고 APNs 및 FCM Native Module 직접 구현을 통한 세밀한 제어권 확보
- iOS 18의 초기 등록 누락 문제를 해결하기 위해 1.5~2초 지연 후 Retry 로직을 적용한 State Machine 기반 등록 프로세스 설계
- Android 8+ Notification Channel 생성 및 13+ Runtime Permission 분기 처리를 통한 OS 버전별 전송 보장 구조 구축
- Token 중복 등록 방지를 위한 Deduplication 로직 및 로그아웃 후 Token 재바인딩 방지를 위한 lastRegisteredToken 참조 검증 도입
- Native(등록/디스플레이/플러밍)와 JS(파싱/내비게이션/비즈니스 로직)의 역할을 엄격히 분리한 Interface 설계
- Cold-start, Foreground, Re-auth 상황의 Race Condition을 해결하는 Deferred-redirect 패턴 적용
실천 포인트
- iOS 18+ 대상 Push 등록 시 권한 승인 직후 즉시 호출 대신 짧은 지연 및 재시도 로직 검토 - Android
8.0 이상 대상 Notification Channel 설정 여부 및 Importance 레벨 확인 - Token 갱신 콜백이 사용자 세션 상태(로그인/로그아웃)와 동기화되는지 검증하는 가드 로직 추가 - Native와 JS 간 데이터 교환 시 단일화된 Event Shape을 정의하여 플랫폼 간 정합성 유지