Jiwift

[iOS/Swift] Notification 권한 확인하는 코드 , Notification Permission Check 본문

iOS Dev/Swift

[iOS/Swift] Notification 권한 확인하는 코드 , Notification Permission Check

지위프트 2023. 10. 20. 01:00
반응형

코드

import UserNotifications

struct NotificationPermissionCheck {
    /*
     사용자의 알림 권한을 확인하고 결과를 완료 핸들러를 통해 반환합니다.
    
     - Parameter completion: 알림 권한 확인 결과를 처리할 완료 핸들러입니다. `true`는 알림 권한이 부여된 경우를 나타내고,
        `false`는 권한이 거부되거나 아직 결정되지 않은 경우를 나타냅니다.
     */
    
    static func check(completion: @escaping (Bool) -> Void) {
        let current = UNUserNotificationCenter.current()
        
        current.getNotificationSettings { settings in
            switch settings.authorizationStatus {
            case .authorized:
                // 사용자가 알림 권한을 부여한 경우
                print("알림에 대한 권한이 부여된 사용자")
                completion(true)
            case .denied, .ephemeral, .notDetermined, .provisional:
                // 사용자가 알림 권한을 거부한 경우 또는 아직 결정하지 않은 경우
                print("사용자 거부 알림 권한 또는 아직 결정하지 않음")
                completion(false)
            @unknown default:
                // 알려지지 않은 권한 상태
                print("Unknown Status")
                completion(false)
            }
        }
    }
}

 이 코드는 iOS 앱에서 사용자의 알림 권한을 확인하는 데 사용됩니다. 주로 알림을 전송하기 전에 사용자가 알림을 허용했는지 여부를 확인하는 데 유용합니다. UserNotifications 프레임워크를 사용하여 알림 권한 상태를 확인합니다.

 

1. UNUserNotificationCenter.current():

 UNUserNotificationCenter 클래스의 current() 메서드를 사용하여 현재 알림 센터의 인스턴스를 가져옵니다.

 

2. current.getNotificationSettings(completionHandler:):

 알림 센터 인스턴스를 사용하여 현재 알림 설정을 비동기적으로 가져옵니다. 이 작업은 사용자가 알림 권한을 부여했는지, 거부했는지 또는 아직 결정하지 않았는지를 확인합니다.

 

3. switch settings.authorizationStatus:

 알림 설정을 확인한 후, 권한 상태를 authorizationStatus를 통해 확인합니다. 여기서 각 상태에 따라 다음과 같은 처리를 수행합니다.

 

- .authorized: 사용자가 알림 권한을 부여한 경우입니다. 이 경우 completion(true)를 호출하여 true 값을 완료 핸들러로 반환합니다.

- .denied, .ephemeral, .notDetermined, .provisional: 사용자가 알림 권한을 거부하거나 아직 결정하지 않았거나, 임시 권한이 부여된 경우입니다. 이러한 경우에는 completion(false)를 호출하여 false 값을 완료 핸들러로 반환합니다.

- @unknown default: 알려지지 않은 권한 상태일 경우, completion(false)를 호출하여 권한 상태를 알 수 없다는 것을 나타냅니다.

 

 이 코드를 사용하면 앱이 알림을 보내기 전에 사용자의 알림 권한을 확인하고, 권한에 따라 적절한 조치를 취할 수 있습니다. 예를 들어, 사용자가 알림 권한을 거부한 경우 사용자에게 권한을 요청하거나 알림을 사용하지 않도록 조치를 취할 수 있습니다.

 

 권한에 따른 동작은 구현 방식에 따라서 수정해서 사용하시면 됩니다. 

 


 

사용 예시

NotificationPermissionCheck.check(completion: { result in
    if result {
        // 권한이 있습니다.
    } else {
        // 권한이 없습니다.
    }
})
반응형