본문 바로가기
프로젝트 만들어보기

[iOS] 약 먹기 알람어플 (Swift)

by 데브킹덕 2022. 11. 23.

 

 

 

💡배운점

- push 알림을 통해 사용자에게 중요한 정보를 전달할 수 있음(앱 사용량, 특정 행동 유도)

- UserNotifications를 이용하여 서버 없이 알림 세부정보를 로컬로 구성해봄

 

👾 라이브러리/ 프레임워크

  • UserNotifications
  • NotificationCenter

 

 

UserNotification 을 이용해 Push 알림 보내는 법

1. 알림 보낼꺼라는 권한 요청

AppDelegate

- Option에 UNAuthorizationOptions(alert, badge, sound) 를 넣어 줌

- completionHandler에는 유저가 허락했을 경우와 안했을 경우로 나뉨

 

- notification을 보내기 전에 어떤 핸들링을 할 것이지 설정

 

2 . Content 지정 (알림 내용)

- title - 제목 / subtitle - 부제목 / body - 내용 / badge - 앱 우측 상단 알림표시 

SceneDelegate 뱃지 설정

- 장면이 활성화되어 사용자 이벤트에 응답하고 있음을 대리자에게 알릴때 뱃지 넘버를 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 형태(임의로 만든 구조체 형태)로 저장되기 때문에 디코딩을 해주어야함