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: 해당 값을 사용해서 원하는 문자열을 넣을 수 있다.
예시