Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

iOS 앱의 알림(Notification) 권한 상태를 확인하는 방법

iOS 앱의 알림 상태란?

알림(Notification)은 앱이 사용자 기기에서 실행 중이든 아니든 상관없이, 앱 사용자에게 중요한 정보를 전달하는 핵심 수단입니다.

예를 들어 스포츠 앱이라면 사용자가 응원하는 팀이 득점할 때마다 알려줄 수 있습니다. 또한 알림을 통해 앱에 새로운 정보를 다운로드하거나 화면(UI)을 업데이트하도록 지시할 수도 있습니다. 알림은 크게 세 가지 방식으로 사용자에게 전달됩니다.

  • 경고창(Alert) 표시
  • 사운드 재생
  • 앱 아이콘에 배지(Badge) 표시

iOS 앱의 알림(Notification) 권한 상태를 확인하는 방법

알림 상태에 대한 자세한 내용은 Apple 공식 문서(developer.apple.com/documentation/usernotifications)에서 확인할 수 있습니다.

Apple은 UserNotifications 프레임워크 사용을 공식적으로 권장합니다. 그럼 지금부터 알림 권한 상태를 확인하는 아주 간단하고 쉬운 방법을 단계별로 살펴보겠습니다.

1단계 — UserNotifications 프레임워크 임포트

가장 먼저 UserNotifications 프레임워크를 프로젝트에 임포트해야 합니다.

import UserNotifications

2단계 — UNUserNotificationCenter 객체 생성

다음으로 알림 센터의 싱글턴 인스턴스인 UNUserNotificationCenter.current() 객체를 생성합니다.

let currentNotification = UNUserNotificationCenter.current()

3단계 — 알림 권한 상태 확인

getNotificationSettings 메서드를 호출하면 현재 알림 권한 상태를 비동기적으로 조회할 수 있습니다. 상태는 크게 세 가지로 구분됩니다.

  • .notDetermined : 아직 사용자에게 권한을 요청한 적이 없는 상태 → 권한 요청을 진행하면 됩니다.
  • .denied : 사용자가 이전에 권한을 거부한 상태 → 설정 > 개인정보 보호에서 다시 활성화하도록 안내해야 합니다.
  • .authorized : 이미 권한이 허용된 상태 → 바로 알림을 사용할 수 있습니다.
currentNotification.getNotificationSettings(completionHandler: { (settings) in
    if settings.authorizationStatus == .notDetermined {
        // 아직 알림 권한을 요청하지 않았습니다. 권한 요청을 진행하세요!
    } else if settings.authorizationStatus == .denied {
        // 이전에 알림 권한이 거부되었습니다. 설정 > 개인정보 보호에서 다시 활성화해야 합니다.
    } else if settings.authorizationStatus == .authorized {
        // 이미 알림 권한이 허용되었습니다.
    }
})

전체 코드 정리

지금까지의 과정을 하나로 합친 최종 코드는 다음과 같습니다.

import UserNotifications

let currentNotification = UNUserNotificationCenter.current()
currentNotification.getNotificationSettings(completionHandler: { (settings) in
    if settings.authorizationStatus == .notDetermined {
        // 아직 알림 권한을 요청하지 않았습니다. 권한 요청을 진행하세요!
    } else if settings.authorizationStatus == .denied {
        // 이전에 알림 권한이 거부되었습니다. 설정 > 개인정보 보호에서 다시 활성화해야 합니다.
    } else if settings.authorizationStatus == .authorized {
        // 이미 알림 권한이 허용되었습니다.
    }
})

마무리

이처럼 UserNotifications 프레임워크를 활용하면 단 몇 줄의 코드로도 앱의 알림 권한 상태를 손쉽게 파악할 수 있습니다. 참고로 iOS 12 이상에서는 .provisional(조건부 허용) 상태도 존재하므로, 더 세밀한 분기 처리가 필요하다면 해당 케이스도 함께 고려하는 것이 좋습니다. 사용자 경험을 높이기 위해 권한 요청 시점과 안내 문구를 적절히 설계하는 것도 잊지 마세요.