[swift] Swift에서 로컬 알림을 반복 일정에 따라 예약하는 방법

로컬 알림은 사용자에게 중요한 정보를 전달하고 앱과 상호작용할 수 있는 기능입니다. Swift를 사용하여 반복 일정에 따라 로컬 알림을 예약하는 방법을 알아보겠습니다.

1. UNUserNotificationCenter 설정

로컬 알림을 사용하기 위해 먼저 UNUserNotificationCenter를 설정해야 합니다. 이를 위해 앱의 AppDelegate.swift 파일에서 다음 코드를 추가합니다.

import UIKit
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // 알림 권한 요청
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
            if granted {
                print("알림 권한이 허용되었습니다.")
            } else {
                print("알림 권한이 거부되었습니다.")
            }
        }

        return true
    }
}

위의 코드는 알림 권한을 요청하고, 허용되었는지 확인하는 과정입니다.

2. 반복 일정에 따라 알림 예약하기

로컬 알림을 반복 일정에 따라 예약하려면 UNMutableNotificationContent, UNCalendarNotificationTrigger, UNNotificationRequest 등의 클래스를 사용해야 합니다.

예를 들어, 매주 월요일 아침 9시에 알림을 예약한다고 가정해봅시다. 다음과 같은 코드를 사용할 수 있습니다.

import UIKit
import UserNotifications

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let content = UNMutableNotificationContent()
        content.title = "주간 회의"
        content.body = "월요일 아침 9시에 회의가 있습니다."
        content.sound = UNNotificationSound.default

        var dateComponents = DateComponents()
        dateComponents.weekday = 2
        dateComponents.hour = 9

        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)

        let request = UNNotificationRequest(identifier: "weeklyMeeting", content: content, trigger: trigger)

        UNUserNotificationCenter.current().add(request) { (error) in
            if let error = error {
                print("알림 예약에 실패하였습니다: \(error.localizedDescription)")
            } else {
                print("알림이 예약되었습니다.")
            }
        }
    }
}

위의 코드에서 UNMutableNotificationContent를 사용하여 알림의 내용을 설정하고, UNCalendarNotificationTrigger를 사용하여 반복 일정을 설정합니다. 그리고 UNNotificationRequest를 통해 알림 예약을 요청하고, UNUserNotificationCenter를 통해 알림을 추가합니다.

매주 월요일 아침 9시에 알림이 예약됩니다.

결론

이렇게 Swift에서 로컬 알림을 반복 일정에 따라 예약하는 방법에 대해 알아보았습니다. 로컬 알림을 사용하면 앱과 사용자 간의 소통을 원활하게 할 수 있으며, 일정에 따라 알림을 예약하는 기능을 추가할 수 있습니다.

참고 자료: