목차
- UNUserNotificationCenter란?
- Push Notification 사용 권한 요청
1. UNUserNotificationCenterDelegate 채택
2. Notification 권한 부여 요청
3. APNS(Apple Push Notification Service)에 등록
UNUserNotificationCenter란?
앱과 앱 익스텐션에 대한 알림 관련 작업을 관리하기 위한 센트럴 오브젝트.
공유된 UNUserNotificationCenter 객체를 사용하여 앱과 앱 확장의 모든 알림 관련 동작을 관리한다.
Push Notification 사용 권한 요청
알림에 응답하여 알럿을 표시하거나, 소리를 재생하거나, 앱 아이콘에 배지를 달 수 있는 권한을 요청하는 방법에 대해 알아보자.
1. UNUserNotificationCenterDelegate 채택
알림 관련 작업을 처리하려면 UNUserNotificationCenterDelegate 프로토콜을 채택하는 객체를 생성하여 이 객체의 델리게이트 프로퍼티에 할당한다. 이 작업은 해당 델리게이트와 상호작용을 할 수 있는 다른 작업을 수행 하기 전에 이 델리게이트 프로퍼티에 객체를 항상 할당하자.
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().delegate = self
return true
}
}
2. Notification 권한 부여 요청
승인을 요청하려면, UNUserNotificationCenter 인스턴스를 가져와서 requestAuthorization(options:completionHandler:) 을 호출하자. (alert, sound, badge 타입 요청 가능)
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if let error = error {
// Handle the error here.
}
// Enable or disable features based on the authorization.
}
3. APNS(Apple Push Notification Service)에 원격 알림을 수신하도록 등록
Apple Push Notification Service에 등록 프로세스를 시작하려면 아래 메소드를 호출하자. (Main Thread에서 진행해야함.)
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
등록이 성공되었다면, 앱은 앱 델리게이트 객체의 application(_:didRegisterForRemoteNotificationsWithDeviceToken:) 메소드를 호출하여 디바이스 토큰을 전달함. (디바이스의 원격 알림을 생성하기 위해서는 서버에 이 토큰을 전달해야함.)
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
}
등록이 실패되었다면, 앱은 앱 델리게이트 객체의 application(_:didFailToRegisterForRemoteNotificationsWithError:) 메소드를 호출한다.
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
}
Ref.
'iOS > iOS 본질을 파헤치쟈' 카테고리의 다른 글
iOS 접근성 개발 참고 자료 (0) | 2021.08.25 |
---|---|
[iOS] iOS 애플리케이션 실행 순서, UIApplicationMain, @main (0) | 2021.07.06 |
[iOS] Autolayout Engine 동작 방식 (0) | 2019.12.09 |