https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server
"Generate notifications and push them to user devices."
노티피케이션을 생성하고 사용자 기기로 푸시합니다.
앱을 사용하고 있는 기기에 작은 양의 데이터를 푸시하기 위해 원격 노티피케이션(푸시 노티피케이션이라고도 알려진)을 사용하시기 바랍니다. 앱이 실행중이지 않을 때에도 데이터를 푸시할 수 있습니다. 앱은 사용자에게 중요한 정보를 제공하기 위해 노티피케이션을 사용합니다. 예를 들어 메시지 서비스는 새 메시지가 도착했을 때 원격 노티피케이션을 보냅니다.
원격 노티피케이션의 전송은 몇 가지 핵심 요소에 관련이 잇습니다.
원격 노티피케이션은 앱 자공자의 서버에서 시작합니다. 사용자에게 어떤 노티피케이션을 보냊리, 언제 보낼지를 결정할 수 있습니다. 노티피케이션을 보낼 때가 되면, 노티피케이션과 사용자의 기기에 대한 고유한 아이덴티파이어를 포함하는 요청을 생성합니다. 이후 사용자이 기기에서 노티키페이션의 전달을 처리하는 APNs에 요청을 전달합니다. 노티피케이션이 받아들여지만 사용자의 기기 운영체제는 모든 사용자 상호작용을 처리하고 앱에 노티피케이션을 전달합니다.
제공자 서버(혹은 서버)를 설정해야 할 필요가 있으며, 사용자의 기기에서 노티피케이션을 처리하기 위해 앱을 설정할 필요가 있습니다. 애플은 그 사이에서 모든 것을 관리하며, 사용자에게 노티피케이션을 보여주는 것까지 포함합니다. 서버와 소통할 수 있으며 필수적인 정보를 제공할 수 있는 앱도 필요합니다. 원격 노티피케이션의 처리 방법에 대한 내용은 Registering Your App with APNs를 보시기 바랍니다.
Registering Your App with APNs
https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns
https://velog.io/@panther222128/Registering-Your-App-with-APNs
원격 노티피케이션 서버 설정은 몇 가지 핵심 작업을 구성합니다. 이 작업을 어떻게 구현하는지는 인프라에 따라 달라집니다. 스스로에게 적합한 기술을 사용하시기 바랍니다.
Registering Your App with APNs
https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns
https://velog.io/@panther222128/Registering-Your-App-with-APNs
Generating a Remote Notification
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification
https://velog.io/@panther222128/Generating-a-Remote-Notification
Sending Notification Requests to APNs
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns
https://velog.io/@panther222128/Sending-Notification-Requests-to-APNs
Establishing a Token-Based Connection to APNs
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns
https://velog.io/@panther222128/Establishing-a-Token-Based-Connection-to-APNs
제공자 서버와 APNs의 커뮤니케이션은 보안 연결에서 발생해야 합니다. 해당 연결 생성은 각 서버에 대해 GeoTrust Global CA root certificate (until March 29, 2021) 및 AAA Certificate Services root certificate (starting March 29, 2021) 설치를 요구합니다.
제공자 서버가 macOS에서 실행 중이라면, GeoTrust Global CA root certificate는 기본값으로 키체인에 있습니다. 제공자 서버가 macOS 10.14 혹은 이후 버전에서 작동한다면, AAA Certificate Services root certificate는 기본값으로 키체인에 있습니다. 다른 시스템의 경우 이 인증서를 직접 설치해야 합니다. GeoTrust Root Certificates 웹사이트에서 GeoTrust Global CA root certificate를 다운로드할 수 있습니다. Sectigo KnowledgeBase 웹사이트에서 “AAACertificateServices 5/12/2020”을 다운로드할 수 있습니다.
노티피케이션을 보내려면 제공자 서버는 HTTP/2 및 TLS를 사용해서 APNs와 함께 토큰 기반 혹은 인증서 기반의 신뢰를 설정해야 합니다. 각 기술은 장점과 단점을 갖습니다. 어떤 기술인 최선인지 결정하시기 바랍니다.
Establishing a Token-Based Connection to APNs
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns
https://velog.io/@panther222128/Establishing-a-Token-Based-Connection-to-APNs
Establishing a Certificate-Based Connection to APNs
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns
https://velog.io/@panther222128/Establishing-a-Certificate-Based-Connection-to-APNs
APNs는 노티피케이션 전달을 위해, 최선의 사용자 경험을 전달하기 위해 많은 노력을 기울이고 있습니다.
JSON 페이로드로 사용자의 기기에 노티피케이션을 전송합니다.
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification
https://velog.io/@panther222128/Generating-a-Remote-Notification
애플 푸시 노티피케이션 서비스(APNs)에 원격 노티피케이션 페이로드 및 기기 토큰 정보를 전송합니다.
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns
https://velog.io/@panther222128/Sending-Notification-Requests-to-APNs
APNs 서버가 반환한 상태 코드에 응답합니다.
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/handling_notification_responses_from_apns
https://velog.io/@panther222128/Handling-Notification-Responses-from-APNs
앱을 깨우고 백그라운드에서 업데이트하는 노티피케이션을 전달합니다.
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app
https://velog.io/@panther222128/Pushing-Background-Updates-to-Your-App
제공자 서버와 APNs 사이에 보안 연결을 생성합니다.
stateless 인증 토큰을 사용해서 애플 푸시 노티피케이션 서비스(APNs)와 커뮤니케이션을 보안상 안전하게 합니다.
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns
https://velog.io/@panther222128/Establishing-a-Token-Based-Connection-to-APNs
제공자 서버에 인증서 설치를 통해 애플 푸시 노티피케이션 서비스(APNs)와 커뮤니케이션을 보안상 안전하게 합니다.
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns
https://velog.io/@panther222128/Establishing-a-Certificate-Based-Connection-to-APNs
애플 푸시 노티피케이션 서비스(APNs)와 커뮤니케이션하고, 앱을 식별하는 고유한 기기 토큰을 받습니다.
https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns
https://velog.io/@panther222128/Registering-Your-App-with-APNs
애플 푸시 노티피케이션 서비스(APNs)에 푸시 노티피케이션을 전송하기 위해 기본적인 macOS 커맨드 라인 툴을 사용합니다.
https://developer.apple.com/documentation/usernotifications/sending_push_notifications_using_command-line_tools
https://velog.io/@panther222128/Sending-Push-Notifications-Using-Command-Line-Tools