[swift] Swift에서 로컬 알림을 특정 날짜와 시간에 예약하고 주기적으로 반복하는 방법

Swift를 사용하여 iOS 앱을 개발하다 보면 로컬 알림을 예약하고 주기적으로 반복하는 기능이 필요할 때가 있습니다. 이번 블로그 기사에서는 Swift에서 특정 날짜와 시간에 로컬 알림을 예약하고, 주기적으로 반복하는 방법에 대해 알아보겠습니다.

알림 예약하기

알림을 예약하기 전에, 로컬 알림을 사용할 수 있도록 앱에 알림 권한을 요청해야 합니다. 이렇게 하려면 앱의 Info.plist 파일에서 UIUserNotificationSettings 또는 UNAuthorizationOptions 항목을 추가해야 합니다.

아래는 Swift 코드를 사용하여 특정 날짜와 시간에 로컬 알림을 예약하는 방법입니다:

import UserNotifications

func scheduleNotification(at date: Date, with body: String) {
    let notificationContent = UNMutableNotificationContent()
    notificationContent.body = body
    
    let triggerDateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
    let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDateComponents, repeats: false)
    
    let request = UNNotificationRequest(identifier: "notificationID", content: notificationContent, trigger: trigger)
    
    UNUserNotificationCenter.current().add(request) { (error) in
        if let error = error {
            print("Error scheduling notification: \(error.localizedDescription)")
        }
    }
}

위의 코드에서는 scheduleNotification 함수를 사용하여 알림을 예약합니다. 함수는 예약할 날짜와 시간 (date) 및 알림의 내용 (body)을 매개 변수로 받습니다.

먼저, UNMutableNotificationContent 객체를 생성하여 알림의 내용을 설정합니다. 그런 다음, UNCalendarNotificationTrigger 객체를 생성하여 예약할 날짜와 시간을 설정합니다.

마지막으로, UNNotificationRequest 객체를 생성하여 알림 요청을 만들고, UNUserNotificationCenter.current().add(request)를 사용하여 알림을 예약합니다.

알림 반복 설정하기

로컬 알림을 주기적으로 반복하려면 repeat 속성을 true로 설정해야 합니다.

import UserNotifications

func scheduleRepeatingNotification(at date: Date, with body: String) {
    let notificationContent = UNMutableNotificationContent()
    notificationContent.body = body
    
    let triggerDateComponents = Calendar.current.dateComponents([.hour, .minute, .second], from: date)
    let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDateComponents, repeats: true)
    
    let request = UNNotificationRequest(identifier: "notificationID", content: notificationContent, trigger: trigger)
    
    UNUserNotificationCenter.current().add(request) { (error) in
        if let error = error {
            print("Error scheduling repeating notification: \(error.localizedDescription)")
        }
    }
}

위의 코드에서는 scheduleRepeatingNotification 함수를 사용하여 반복하는 알림을 예약합니다. 날짜에는 해당 날짜의 시간 정보만 필요하기 때문에 UNCalendarNotificationTrigger를 생성할 때 .day를 제외한 구성 요소만 사용합니다. repeats 속성을 true로 설정하여 알림이 반복되도록 설정합니다.

요약

이번 블로그 기사에서는 Swift에서 로컬 알림을 예약하고 주기적으로 반복하는 방법을 살펴보았습니다. 예약할 날짜와 시간, 알림의 내용 등을 설정한 다음, UNNotificationRequest를 사용하여 알림을 예약합니다. 알림을 반복하려면 UNCalendarNotificationTrigger에서 repeats 속성을 true로 설정해야 합니다.

더 자세한 내용은 Apple의 UserNotifications 프레임워크 가이드를 참조하십시오.