[swift] Swift PromiseKit과 푸시 알림

프론트엔드 개발을 하다보면 비동기 작업을 처리해야 할 때가 많습니다. 비동기 작업을 보다 효율적으로 처리할 수 있는 방법 중 하나는 Promise를 사용하는 것입니다. Swift에서는 Promise를 쉽게 사용할 수 있는 PromiseKit 라이브러리가 있습니다.

또한, 앱 개발시에는 푸시 알림을 구현해야 할 때가 많습니다. 이번 포스트에서는 Swift PromiseKit을 사용하여 푸시 알림을 받는 방법에 대해 알아보겠습니다.

PromiseKit 소개

PromiseKit은 Swift에서 비동기 작업을 처리하기 위한 라이브러리입니다. Promise를 사용하면 비동기 작업의 성공 또는 실패에 대한 결과를 처리할 수 있습니다. 이를 통해 코드를 더욱 간결하게 작성할 수 있고, 콜백 지옥을 피할 수 있습니다.

푸시 알림 받기

푸시 알림을 받기 위해서는 알림 등록 및 구성을 해야 합니다. 다음은 푸시 알림을 등록하는 코드의 예시입니다.

import UIKit
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        // 푸시 알림 등록
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
            if granted {
                application.registerForRemoteNotifications()
            }
        }
        
        return true
    }
    
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){
        
        // 디바이스 토큰 받아오기
        let tokenString = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
        print("Device Token:", tokenString)
        
        // Promise를 사용한 푸시 알림 처리
        let promise = UNNotificationPromise().registerForRemoteNotifications(deviceToken: tokenString)
        
        promise.then { (response) in
            // 푸시 알림 등록 성공
            print("Push notification registration succeeded")
        }.catch { (error) in
            // 푸시 알림 등록 실패
            print("Push notification registration failed: \(error.localizedDescription)")
        }
    }
    
    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
        // 푸시 알림 등록 실패
        print("Push notification registration failed: \(error.localizedDescription)")
    }
    
}

위 코드에서는 didFinishLaunchingWithOptions 메서드에서 푸시 알림을 등록하고, didRegisterForRemoteNotificationsWithDeviceToken 메서드에서 토큰을 받아오고 Promise를 사용하여 푸시 알림을 처리합니다.

결론

Swift PromiseKit을 사용하면 비동기 작업을 보다 쉽게 처리할 수 있습니다. 푸시 알림 등록과 처리를 예시로 들었지만, PromiseKit은 다양한 비동기 작업에 유용하게 사용될 수 있습니다. 앱 개발시에는 PromiseKit을 적극적으로 활용하여 효율적인 코드 작성에 도움을 받을 수 있습니다.

참고 자료