iOS 앱에서 Notification을 스케줄 하는 방법
https://developer.apple.com/documentation/usernotifications
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)
'1 - iOS' 카테고리의 다른 글
iOS 개발자를 위한 (0) | 2022.07.05 |
---|---|
[iOS/Swift] CaseIterable을 이용한 랜덤 값 뽑기 (0) | 2022.06.10 |
[iOS/Swift] Xcode project에 Firebase 추가 (0) | 2022.05.16 |
[iOS/Swift] Xcode CocoaPods Install 코코아팟 설치 방법 (0) | 2022.04.17 |
[iOS/Swift] SwiftUI TextEditor background color (0) | 2022.04.12 |