본문 바로가기
1 - iOS

[iOS/Swift] Notification 설정, identifier, 매주 특정 요일 반복

by seonshine-bibi 2022. 6. 10.
반응형

iOS 앱에서 Notification을 스케줄 하는 방법

 

https://developer.apple.com/documentation/usernotifications

 

 

Apple Developer Documentation

 

developer.apple.com

 

 

Notification을 위한 request에는 identifier, content, trigger 3가지가 필요하다.

 

identifier는 String으로 받는다.

Notification을 설정할 때 identifier를 제대로 정의하고 설정해주는 것이 좋다.

동일한 identifier의 notification을 새로 스케줄링하면 system 상에서 자동으로 이전에 해당 identifier로 스케줄 되어있던 notification을 지우고 새로운 것으로 교체하기 때문이다.

 

content는 title, subtitle, body 를 String으로 받는다. nil이면 안되기 때문에 subtitle이 필요없을 경우 빈 문자열을 넣어준다. 그 외 sound 등도 지정할 수 있다.

 

trigger는 Notification을 보내는 시각을 지정해주는 용도이다. 아래와 같이 4가지 종류가 있다.

보통의 시각이 지정된 Notification의 경우,  UNCalendarNotificationTrigger 를 많이 사용한다.

 

 

 

UserNotifications를 import 해주고,

Request를 구성하여,

UNUserNotificationCenter를 통해 add 해주면 스케줄이 된다. 

 

import UserNotifications

 

 

 

 


 

 

매주 특정 요일에 Notification을 반복 설정하는 방법

 

Swift에서는 일요일부터 시작하여 토요일까지 각각 1부터 7까지의 숫자로 요일이 대응된다.

 

	// Swift 기준
        // Sun : 1
        // Mon : 2
        // Tue : 3
        // Wed : 4
        // Thu : 5
        // Fri : 6
        // Sat : 7

 

 

 

Notification trigger에 넣는 시간은 DateComponents 형태인데, 

hour, minute, weekday를 지정해주면 된다.

 

var components = calendar.dateComponents([.hour, .minute], from: datetime)
components.weekday = wday

 

 

 

그리고 trigger에서 repeats 을 true로 설정하여 request를 만들어주면 된다.

 

 trigger = UNCalendarNotificationTrigger(dateMatching: noti.datetime, repeats: true)

 

 

반응형