[IOS] 푸시 Background 일때의 동작

백그라운드에서 푸시 알림을 처리하는 것은 앱이 백그라운드 상태일 때, 사용자에게 직접적으로 푸시 알림이 표시되지 않는 상황에서도 푸시 알림과 관련된 추가 작업을 수행하고자 할 때 유용합니다. 예를 들어, 백그라운드에서 푸시 알림을 수신하고 이를 기반으로 서버에서 데이터를 가져오거나 처리하는 작업을 수행하려는 경우입니다.

UNNotificationServiceExtension을 사용하여 푸시 알림을 처리할 때, 다음과 같은 두 가지 상황을 고려해야 합니다:

  1. Foreground 상태: 앱이 포그라운드 상태에 있을 때 푸시 알림이 도착하면, didReceive(_:withContentHandler:) 메서드가 호출됩니다. 이때 앱이 실행 중이므로 푸시 알림의 내용을 변경하여 사용자에게 표시할 수 있습니다.

  2. Background 상태: 앱이 백그라운드 상태에 있을 때 푸시 알림이 도착하면, 사용자에게 알림은 표시되지 않습니다. 그러나 여기에서 백그라운드에서 실행되어야 하는 작업을 처리하기 위한 방법을 제공합니다.

    백그라운드에서 작업을 수행하려면 아래와 같은 방식으로 처리합니다:

    • didReceive(_:withContentHandler:) 메서드 내에서 startBackgroundTask(completion:) 함수를 호출합니다. 이 함수는 백그라운드 작업을 시작하고, 작업이 완료되면 전달받은 completion 클로저를 호출하여 작업이 끝났음을 알립니다.

    • startBackgroundTask(completion:) 함수는 백그라운드 작업을 시작하고 해당 작업을 수행하는 동안 앱이 백그라운드 상태에서도 계속 실행될 수 있도록 합니다. 작업이 완료되면 completion 클로저를 호출하여 변경된 내용을 UNNotificationServiceExtension으로 전달하고, 백그라운드 작업을 종료합니다.

    이렇게 함으로써 백그라운드에서 푸시 알림을 받았을 때, 푸시 알림의 내용을 변경하거나 서버 요청 등의 추가 작업을 수행하고 결과를 푸시 알림에 반영할 수 있습니다.

백그라운드 상태에서의 작업 처리는 앱의 배경 동작에 관련된 제약과 규칙을 준수해야 하므로, 실제로 백그라운드 작업을 수행하기 전에 해당 동작에 대한 문서를 확인하고 안내에 따라 처리하는 것이 중요합니다.