💡배운점
- push 알림을 통해 사용자에게 중요한 정보를 전달할 수 있음(앱 사용량, 특정 행동 유도)
- UserNotifications를 이용하여 서버 없이 알림 세부정보를 로컬로 구성해봄
👾 라이브러리/ 프레임워크
- UserNotifications
- NotificationCenter
UserNotification 을 이용해 Push 알림 보내는 법
1. 알림 보낼꺼라는 권한 요청
- Option에 UNAuthorizationOptions(alert, badge, sound) 를 넣어 줌
- completionHandler에는 유저가 허락했을 경우와 안했을 경우로 나뉨
- notification을 보내기 전에 어떤 핸들링을 할 것이지 설정
2 . Content 지정 (알림 내용)
- title - 제목 / subtitle - 부제목 / body - 내용 / badge - 앱 우측 상단 알림표시
- 장면이 활성화되어 사용자 이벤트에 응답하고 있음을 대리자에게 알릴때 뱃지 넘버를 0으로 바꾸도록함
3. UNNotificationTrigger 사용하기
Trigger - 어떤 기준에서 알람을 발송할 것인지 선언하는 일종의 조건을 걸어주는 부분
4가지 트리거 존재
1. UNCalenderNotificationTrigger - 달력/날짜
2.UNTimeIntervalNotificationTrigger - 시간/간격
3.UNLocationNotificationTrigger - 사용자 위치
4. UNPushNotificationTrigger - APN(Apple Push Notification Service)이 알림을 보냈음을 나타내는 트리거 조건
UNCalenderNotificationTrigger를 이용
- dateComponents() - 달력 표준시를 사용하여 날짜의 모든 구성요소를 반환
- UNCalenderNotificationTrigger (dateMatching: 날짜 구성 요소 매개변수, repeats: 참/거짓 조건)
4. 알림 요청 (Request)
UNNotificationRequest 클래스를 이용해 식별자, 트리거와 content를 넘겨 주어 요청할 수 있음
* 식별자 - 보류중인 알림 요청 또는 전달 된 알림을 바꾸거나 제거하는 데 사용할 수 있음
5. UNUserNotificationCenter에 추가해주기
- 우체통 역할
- Request로 요청한 것을 UNUserNotificationCenter에 예약할 수 있음
- Center에 차곡차곡 잘 보관되어 있다가 Request 내에 Trigger에서 정의한 적정한 순간에 보내게 됨
- Center에 저장된 것 중에 id 식별자가 같은 것을 삭제할 수 있도록함
Prefers Large Titles
Prefers Large Titles를 이용해 Navigation Bar의 title을 강조함
UUID(Universally Unique IDentifier - 범용 고유 식별자)
request 요청시 identifier 식별자에 고유한 값을 가져오기 위해 사용
DateFormatter
DateFormatter를 통해 원하는 방식의 String형으로 변환할 수 있음
UserDefaults
- 앱 종료후 데이터가 사라지는 것을 방지하기 위해 Local 저장소에도 저장하기 위해 UserDefaults를 사용함
- PropertyList 형태(임의로 만든 구조체 형태)로 저장되기 때문에 디코딩을 해주어야함
'프로젝트 만들어보기' 카테고리의 다른 글
[iOS] 실시간 공지 팝업 만들기 (Swift) (0) | 2022.11.14 |
---|---|
[iOS] 신용카드 추천 리스트 만들기 (Kingfisher / lottie / Realtime Database / Cloud Firestore) (0) | 2022.11.12 |
[iOS] 코로나 어플만들기 - COVID19 (Swift) (0) | 2022.10.30 |
[iOS] 날씨 앱 만들기 (UIKit) (0) | 2022.10.25 |
[iOS] TodoList 만들기 3/3 (.setEditing/commit editingStyle forRowAt/moveRowAt) (1) | 2022.10.11 |