[IOS] UNNotificationServiceExtension UIApplication

UNNotificationServiceExtension에서 UIApplication 객체를 직접 사용할 수 없습니다. UNNotificationServiceExtension은 알림 처리를 위한 확장(extension)으로 별도의 프로세스에서 동작하므로, 앱의 메인 프로세스와는 독립적으로 실행됩니다.

따라서, 백그라운드 작업을 처리하는 동안 UIApplication 객체에 직접 액세스할 수 없습니다. 대신, 백그라운드 작업을 수행하는데 필요한 작업을 didReceive(_:withContentHandler:) 메서드 내부에서 처리하거나, 필요한 정보를 푸시 알림의 내용(UNNotificationContent)에서 가져와 사용하는 방식으로 처리해야 합니다.

예를 들어, 푸시 알림의 내용에 포함된 사용자 지정 데이터를 가져오는 경우:

class NotificationService: UNNotificationServiceExtension {
    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        // 푸시 알림의 내용 가져오기
        let notificationContent = request.content
        
        // 사용자 지정 데이터 가져오기
        if let customData = notificationContent.userInfo["customKey"] as? String {
            // 사용자 지정 데이터 활용
            print("Custom data: \(customData)")
        }
        
        // 변경된 내용을 전달
        contentHandler(notificationContent)
    }
}` 

앱의 메인 프로세스와 백그라운드 확장 프로세스 사이에서 데이터를 공유하려면 다른 방법을 고려해야 합니다. 예를 들어, 앱과 푸시 알림 서버 간의 통신을 통해 데이터를 가져오거나, 백그라운드 확장 프로세스에서 가져온 데이터를 앱 데이터베이스에 저장하는 등의 방법을 고려할 수 있습니다.