본문으로 건너뛰기

푸시 받기

앱 쪽 푸시. 권한은 한 번만 묻고, 네이티브 토큰(APNs · FCM)을 서버에 등록 · 해제하며, 토큰이 바뀌면 다시 등록하고, 알림을 눌러 연 data 를 화면 하나로 읽는다(꺼진 앱을 켠 경우 포함). 보내는 쪽은 푸시 유닛이다. expo-notifications 는 소비 앱이 넣는다

npm install @duolabs-deux/unit-push-receive

직접 넣어 보기

기기
처음 권한
누른 알림 data

→ 스레드 화면 /project/thread/t9?projectId=p1

routes: thread(projectId, threadId) · project(projectId). 값은 문자열만 읽는다

어댑터

id종류설명
expo실제소비 앱이 expo-notifications 를 주입한다(createExpoNotificationsEngine). 네이티브 토큰을 쓰고 Expo 중계를 거치지 않는다
fake가짜기기 없이 결정적으로 답한다. 권한 · 토큰 · 꺼진 앱의 알림을 옵션으로 정하고, rotateToken · tap 으로 토큰 교체와 누르기를 흉내 낸다

실패와 소비 앱이 할 일

종류언제할 일
upstream-down서버 등록 · 해제 호출(server.register · unregister)이 던졌을 때삼키고 다음 sync 때 다시 등록한다. 알림 때문에 앱 사용을 막지 않는다
unexpected엔진이 권한을 읽거나 묻다가 예외를 던졌을 때알림 설정 화면에 「다시 시도」를 둔다

한도

  • 권한이 없거나 토큰을 못 받으면 오류가 아니라 skipped 다. 앱 사용을 막지 않는다
  • 거절한 뒤 다시 물으면 iOS 는 창 없이 거절을 돌려준다. 설정 앱으로 보내는 것은 소비 앱의 몫이다
  • Android 13+ 는 알림 채널이 하나라도 있어야 권한 창이 뜬다. 채널 id 는 서버 FCM 메시지의 channelId 와 같아야 한다
  • 알림 data 는 문자열만 읽는다(FCM data 는 문자열만 실린다). 모르는 type 은 열지 않는다

명세