Notifee 라이브러리

1. Notification 권한 설정

notifee.requestPermission()

Notification permission이 없을 때, 요청을 보내는 함수.
요청 후, authorizationStatus 로 허용 여부 확인이 가능하다.
android 13 버전부터 요청해야하는 POST_NOTIFICATIONS api가 기본적으로 포함되어있다.
ios, aos 필수 설정이 다르다.
예시
IOS
Android

notifee.getNotificationSettings()

퍼미션 상태를 확인하는 함수.
requestPermission()과 동일하게 AuthorizationStatus 를 리턴한다.

2. 푸시 메세지 세팅

갤럭시 Notification UI

Notification UI가 갤럭시의 경우, One UI 3.0 이상부터 “brief pop-up style” 설정이 추가됨
해당 옵션을 적용할 경우, 푸시 메세지의 제목과 메세지가 합쳐서 1줄로 표시된다
예시 사진
notification 설정 시, 갤럭시의 brief pop-up style을 무시하고 전체 메세지를 보여주기 위해, 중요도가 최상인 CALL을 카테고리로 지정한다.
예시

notifee.displayNotification()

기존 라이브러리에서 scheduleNotification을 1초로 세팅하는 것과 동일한 용도.
특정 시점에 예약해서 푸시 메세지를 보내는 것이 아니라, 즉시 푸시 메세지가 보내져야할 때 사용한다.
ex. 운동 완료
예시

notifee.createTriggerNotification()

특정 시점에 예약해서 푸시 메세지를 보낼 때 사용하는 함수
예시
현재 “초” 단위와 “날짜” 단위로 trigger notification 설정이 가능하다
초 단위
날짜 단위
Timestamp Trigger
특정 시간이나 날짜에 노티피케이션을 설정할 수 있다.
안드로이드의 경우, 최대 50개의 예약 노티피케이션을 설정할 수 있다.
ios의 경우, 최대 64개라고 하지만, 공식문서에 따로 언급된 부분은 없다.
노티피케이션 설정을 “허용하지 않음”으로 변경할 경우, timestamp trigger는 전부 사라진다.
다시 허용할 경우, 시스템이 알아서 기존 노티피케이션을 복구한다.
android 12 버전 이후부터 triggerNotification을 사용하기 위해선 SCHEDULE_EXACT_ALARM 권한이 허용된 상태여야한다.
Timestamp Trigger 추가 속성:
1.
RepeatFrequency
1.) ios의 경우, repeatFrequency 설정 당일부터 notification이 동작한다. 2.) android의 경우, 설정 다음날부터 notification이 동작한다.
ex. 1월 1일 오전 10시에 매일 11시부터 notification 설정 시:
ios - 1월 1일 오전 11시부터 동작
android - 1월 2일 오전 11시부터 동작
repeatFrequency 를 이용해서 지정한 시간마다 반복되게끔 설정할 수 있다.
Hourly, Daily, Weekly 3가지로 설정할 수 있다.
2.
Interval Trigger
기본적으로 Timestamp.repeatFrequency와 동일한 기능을 제공한다.
Days, Hours, Minutes, Second로, repeatFrequency보다 더 작은 단위의 시간으로 반복되게 설정이 가능하다.

Background Only Notification

background 상태에서만 푸시 메세지 보내는 방식은 android와 ios가 상이하다.
ex. 휴식 타이머 동작 방식
AOS
IOS

3. 푸시 메세지 취소

notifee.cancelNotification()

특정 notification 취소
notification id를 파라미터로 받는다

notifee.cancelTriggerNotification();

특정 trigger notification 취소
notification id를 파라미터로 받는다

notifee.cancelTriggerNotifications()

다수의 trigger notification 취소
notification id로 이뤄진 배열을 파라미터로 받는다
예시

notifee.cancelAllNotifications()

전체 notification 취소
Notifee 사용 시, 이미 전달된 노티피케이션도 삭제할 수 있다
notifee.cancelDisplayedNotifcation()
notifee.cancelDisplayedNotifications()

4. 푸시 메세지 이벤트 핸들링

ios와 android는 각각 foreground / background 상태에 대한 기준이 다르다. - ios는 background에 살아있는 상태도 foreground로 구분한다. - android는 앱이 현재 켜져있는 상태만 foreground로 구분한다.

Foreground Events

RN 코드 내에서 돌아갈 때 notification이 동작할 경우 foreground로 구분된다.
앱이 런칭된 다음 notification event를 핸들링한다.
기존 라이브러리 기준, scheduleNotif를 이용해서 핸들링된 모든 navigation 이벤트는 foreground event로 분류된다.
앱이 foreground일 때 푸시 메세지 선택 시, onForegroundEvent 내에 정의된 액션대로 동작한다.
예시

Background Events

앱이 켜져있지 않은 상태에서 notification이 동작하는 경우 background로 분류된다.
주로 서버에서 설정하는 remote notification이 이 케이스에 해당한다.
앱의 UI를 변경할 순 없지만, 기기의 스토리지나 사용자의 db를 업데이트하거나 notifee를 통해 설정되어있는 notification을 업데이트할 때 사용된다.
예시
동작하는 시점은 백그라운드에서 다시 앱을 오픈하는 시점이다.
EventType에 따라 분기처리를 할 수 있다.

App open events (Killed State)

유저가 노티피케이션을 통해 앱을 부팅할 경우, getInitialNotification() 함수를 사용해서 유저가 선택한 notification의 정보를 가져올 수 있다
getInitialNotification()의 경우, 기존 라이브러리에서 사용하는 방식과 동일하다.
예시

5. Notification Grouping

Android - Channel

Android의 경우, “Channel”을 이용해서 특정 notification끼리 분류할 수 있다.
해당 채널들은 시스템 설정에서 채널별로 notification을 On, Off할 수 있다.
Notifee 내에서 해당 시스템에 접근할 수 있는 방법은 없다.
해당 부분은 android developers 문서에도 코드상으로 접근할 수 없다고 표시
채널별 notification이 One UI 6.1부터 기본 적용되지 않음
시스템 설정 → 알림 → 고급 설정 → 앱별 알림 카테고리 관리 에서 설정 변경이 필요한 상태
await notifee.createChannel({ id: 'alarm', // unique id name: 'Firing alarms & timers', // 사용자의 설정에서 표시될 notification의 이름 lights: false, vibration: true, importance: AndroidImportance.DEFAULT, });
JavaScript
복사

채널별 설정

설정명
기능
bypassDnd
방해금지 모드 무시
description
채널에 대한 설명 추가 (시스템 설정에서 확인 가능)
lights
알림 받을 때 불빛이 켜진다
lightColor
채널별 불빛색 조절
name
사용자 시스템 설정에 표시될 채널명
sound
채널별 알림 소리 설정
soundURI
소리값
vibration
진동 여부
vibrationPattern
진동 패턴
visibility
잠금화면에 알림 표시 유무
각 채널은 상위 단계로 ChannelGroup 설정이 가능하다
폴더 정리의 개념으로 사용할 수 있다

Android - Group

AndroidGroupAlertBehavior
같은 그룹에 속한 notification 묶음 표시 방식
summary
같은 그룹에 묶인 푸시 메세지 중, 설정된 대표 메세지 (summary)만 표시된다.
children
같은 그룹에 묶인 푸시 메세지가 표시된다
all
같은 그룹에 묶인 푸시 메세지 중, 설정된 대표 메세지 (summary)와 실제 메세지가 모두 표시된다.
Sorting
푸시 메세지가 쌓이는 순서를 결정할 수 있다.
Timestamp
시간 순서대로 표시된다. 설정 시 “n분 전” 형식으로 푸시가 도달한 시간이 표시된다.
디폴트 값
key
특정 키값을 이용해서 순서 표시

IOS - Category

안드로이드 그룹과 동일하게 시스템에서 메시지가 보이는 방식을 설정할 수 있다.
카테고리는 이전에 만들어진 내용을 덮어쓰기 때문에 카테고리 만들 땐 모든 카테고리를 한번에 만들어야한다.
예시

카테고리별 설정

설정명
기능
allowAnnouncement
시리가 알림을 확인한다
allowInCarPlay
카플레이 환경에도 알림이 표시된다
IOSIntentIdentifier
시리에게 해당 알림의 용도 제공 (안드로이드 카테고리 같은)
IOSNotificationCategoryAction
알림 자체에서 특정 액션 추가 (답장하기, 확인, 취소 등)
안드로이드 채널에서 설정하는 소리나 기타 기능은 ios에선 카테고리가 아니라 notification 설정 시 설정한다.

IOS - Summary

ios는 시스템에서 자동으로 모든 푸시 메세지를 겹쳐 보이게 만든다.
summaryFormat을 지정해서 표시할 수 있다.
%u- summaryArgument: 해당 값을 사용해서 몇개의 푸시가 쌓였는지 표시할 수 있다.
%@- summaryArgumentCount: 해당 값을 사용해서 원하는 문자열을 넣을 수 있다.
예시