Overview

앱의 서버 기반 콘텐츠가 드물게 또는 불규칙하게 변경된다면, 새로운 콘텐츠가 사용 가능할 때 앱에 알려주기 위해 백그라운드 알림을 사용할 수 있습니다. 백그라운드 알림은 경고를 표시하거나, 사운드를 재생하거나, 앱 아이콘에 배지를 표시하지 않는 푸시 알림입니다. 이 알림은 앱을 백그라운드에서 깨워주고, 앱이 서버에서 다운로드를 시작하고 콘텐츠를 업데이트할 시간을 제공합니다.

Important: 시스템은 백그라운드 알림을 낮은 우선순위로 취급합니다. 따라서 이를 사용해 앱의 콘텐츠를 새로고침할 수 있지만, 시스템이 반드시 전달을 보장하지는 않습니다. 또한 백그라운드 알림의 총 개수가 과도해지면 시스템이 그 전달을 제한할 수 있습니다. 시스템에서 허용하는 백그라운드 알림의 수는 현재 상황에 따라 달라지지만, 한 시간에 두 세개 이상 보내지 않도록 하는 것이 좋습니다.

Enable the remote notifications capability

백그라운드 알림을 받으려면 앱에 푸시 알림(background mode)을 추가해야 합니다. Signing & Capabilities 탭에서 Background Modes 기능을 추가한 뒤, Remote notifications 체크박스를 선택해야 합니다. 아래 그림은 백그라운드 알림을 받기 위해 선택해야 하는 항목을 보여줍니다.

watchOS의 경우, 이 기능을 WatchKit Extension에 추가해야 합니다.

Create a background notification

백그라운드 알림을 보내려면, 아래 예시 코드처럼 aps 딕셔너리에 content-available 키만 포함한 푸시 알림을 생성해야 합니다. 페이로드에 커스텀 키를 포함할 수 있지만, aps 딕셔너리에는 사용자 상호작용을 일으키는 키를 포함하면 안됩니다.

{
    "aps" : {
        "content-available" : 1
    },
    "acme1" : "bar",
    "acme2" : 42
}

또한 알림의 POST 요청에는 apns-push-type 헤더 필드를 background 값으로 설정하고, apns-priority 필드를 5 값으로 설정해야 합니다. APNs 서버는 Apple Watch에 푸시 알림을 보낼 때 apns-push-type 필드를 반드시 요구하며, 모든 플랫폼에서 이를 사용하는 것을 권장합니다. 더 자세한 내용은 Sending notification requests to APNs의 Create a POST request to APNs를 참고하세요.

Receive background notifications

디바이스가 백그라운드 알림을 수신하면, 시스템은 알림 전달을 보류하거나 지연시킬 수 있으며, 이로 인해 아래와 같은 사이드 이펙트가 발생할 수 있습니다:

  • 시스템이 백그라운드 알림을 받으면, 이전 알림은 폐기되고 가장 최근 알림만 보관됩니다.

  • 앱이 강제로 종료되거나 종료된 경우, 시스템은 보관 중이던 알림을 폐기합니다.

  • 사용자가 앱을 실행하면, 시스템은 즉시 보관 중이던 알림을 전달합니다.

백그라운드 알림을 전달하기 위해 시스템은 앱을 백그라운드에서 깨웁니다. iOS에서는 엡 델리게이트의 application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 메서드를 호출하고, watchOS에서는 익스텐션 델리게이트의 didReceiveRemoteNotification(_:fetchCompletionHandler:) 메서드를 호출합니다. 앱은 최대 30초 동안 작업을 수행하고, completion handler를 호출해야 합니다. 더 자세한 내용은 Handling notifications and notification-related actions 문서를 참고하세요.