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