[swift] Swift에서 로컬 알림 설정하는 방법

로컬 알림은 사용자에게 시간 또는 위치 등과 관련된 중요한 정보를 전달하는 데 사용됩니다. Swift에서 로컬 알림을 설정하는 방법을 알아보겠습니다.

단계 1: UserNotifications 프레임워크 가져오기

로컬 알림을 사용하기 위해서는 UserNotifications 프레임워크를 가져와야 합니다. 다음 코드를 사용하여 프로젝트에 UserNotifications 프레임워크를 추가할 수 있습니다:

import UserNotifications

단계 2: 알림 권한 요청하기

먼저, 앱에 알림 권한을 요청해야 합니다. AppDelegate.swift 파일에 다음 코드를 추가하세요:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
        if let error = error {
            print("알림 권한 요청 실패: \(error)")
        } else {
            print("알림 권한 요청 성공")
        }
    }
    return true
}

위 코드는 앱이 시작될 때 알림 권한을 요청하는 메서드입니다. 사용자에게 알림을 보낼 수 있는 권한 여부는 granted 변수를 통해 확인할 수 있습니다.

단계 3: 알림 생성 및 예약하기

로컬 알림을 생성하려면 UNMutableNotificationContentUNNotificationRequest를 사용해야 합니다. 다음은 로컬 알림을 생성하고 예약하는 예제 코드입니다:

func scheduleLocalNotification(title: String, body: String, date: Date) {
    let content = UNMutableNotificationContent()
    content.title = title
    content.body = body
    content.sound = .default
    
    let calendar = Calendar.current
    let components = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
    let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
    
    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request) { (error) in
        if let error = error {
            print("로컬 알림 예약 실패: \(error)")
        } else {
            print("로컬 알림 예약 성공")
        }
    }
}

위 코드는 scheduleLocalNotification 메서드를 사용하여 로컬 알림을 생성하고 예약합니다. title, body, date 매개변수를 사용하여 알림의 제목, 내용과 예약된 일자를 설정합니다.

단계 4: 알림 처리하기

알림이 발생했을 때 앱이 적절히 대응할 수 있도록 AppDelegate.swift 파일에 다음 코드를 추가합니다:

extension AppDelegate: UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        // 알림을 처리하는 로직을 구현합니다.
        completionHandler()
    }
}

위 코드는 userNotificationCenter(_:didReceive:withCompletionHandler:) 메서드를 사용하여 알림을 처리합니다. 이 메서드 안에 알림에 대한 대응 로직을 구현하면 됩니다.

이제 Swift에서 로컬 알림을 설정하는 방법을 알게 되었습니다. 알림을 사용하여 사용자에게 중요한 정보를 전달하고 앱의 기능을 향상시킬 수 있습니다.

참고 자료