[swift] Swift에서 로컬 알림을 사용자가 확인하고 응답할 수 있는 방법

로컬 알림은 iOS 애플리케이션에서 사용자에게 중요한 정보를 전달하고 상호작용할 수 있는 기능을 제공합니다. Swift에서 로컬 알림을 설정하고 사용자가 알림에 응답할 수 있는 방법에 대해 알아보겠습니다.

알림 설정하기

로컬 알림을 사용하기 위해서는 UserNotifications 프레임워크를 import해야 합니다.

import UserNotifications

알림을 설정하기 위해선 UNUserNotificationCenter 객체의 인스턴스를 생성해야 합니다.

let center = UNUserNotificationCenter.current()

알림을 등록하기 전에 알림에 대한 권한을 요청해야 합니다. UNAuthorizationOptions를 사용하여 알림에 대한 권한을 설정할 수 있습니다.

center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
    // 알림 권한 요청 결과 처리
}

알림을 등록하기 전에 권한이 부여되었는지 확인해야 합니다. 권한이 부여되면 알림을 등록할 수 있습니다.

center.getNotificationSettings { (settings) in
    if settings.authorizationStatus == .authorized {
        // 권한이 부여됨
    } else {
        // 권한이 부여되지 않음
    }
}

알림 등록하기

알림을 등록하려면 UNNotificationRequest 객체를 생성해야 합니다. 이 객체에는 알림의 식별자, 알림의 내용, 발생 시각 등 필요한 정보를 설정할 수 있습니다.

// 알림 내용 설정
let content = UNMutableNotificationContent()
content.title = "알림 제목"
content.body = "알림 내용"
content.sound = UNNotificationSound.default

// 알림 발생 시각 설정
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: false)

// 알림 요청 생성
let request = UNNotificationRequest(identifier: "MyNotification", content: content, trigger: trigger)

알림을 등록하기 위해선 UNUserNotificationCenter 객체의 add(_:withCompletionHandler:) 메서드를 호출해야 합니다.

center.add(request) { (error) in
    if let error = error {
        // 알림 등록 실패
    } else {
        // 알림 등록 성공
    }
}

알림에 대한 응답 처리하기

사용자가 알림을 탭하거나 슬라이드하여 알림에 응답할 수 있습니다. 이를 처리하기 위해 UNUserNotificationCenterDelegate 프로토콜을 구현해야 합니다.

class NotificationDelegate: NSObject, UNUserNotificationCenterDelegate {

    // 알림이 표시될 때 호출
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        // 알림 표시 옵션 설정
        completionHandler([.alert, .sound, .badge])
    }

    // 알림에 대한 응답이 발생했을 때 호출
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        // 응답 처리

        completionHandler()
    }
}

이제 UNUserNotificationCenter 객체의 delegate 속성을 설정하여 위에서 구현한 NotificationDelegate를 지정해줍니다.

center.delegate = NotificationDelegate()

알림에 대한 응답 처리는 userNotificationCenter(_:didReceive:withCompletionHandler:) 메서드에서 이루어집니다. 여기서 사용자의 응답을 처리하고 필요한 작업을 수행할 수 있습니다.

결론

Swift에서 로컬 알림을 사용자가 확인하고 응답할 수 있는 방법에 대해 알아보았습니다. 앱에서 중요한 정보를 전달하고 상호작용할 수 있는 이러한 기능을 통해 사용자 경험을 향상시킬 수 있습니다. 추가적인 자세한 내용은 Apple Developer Documentation을 참고하세요.

Apple Developer Documentation - UserNotifications