스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
실시간 현황에 업데이트 브로드캐스트하기
브로드캐스트 푸시 알림을 활용하면 단일 요청으로 수천 개의 실시간 현황에 업데이트를 전송할 수 있습니다. 브로드캐스트 푸시 알림이 앱, 서버, Apple Push Notification Service 전반에서 작동하는 방식을 살펴보고 해당 기능의 모범 사례와 구현 방법을 알아봅니다.
챕터
- 0:00 - Introduction
- 1:17 - Overview
- 4:57 - Get started
- 7:30 - Subscribe to updates
- 8:39 - Send broadcast push notifications
리소스
- Forum: App & System Services
- Sending broadcast push notification requests to APNs
- Sending channel management requests to APNs
- Setting up broadcast push notifications
- Starting and updating Live Activities with ActivityKit push notifications
관련 비디오
WWDC23
-
다운로드
Apple Push Notifications 팀의 Parth입니다 푸시 알림 하나로 많은 사람에게 실시간 현황 업데이트를 브로드캐스트하는 새 방법을 소개합니다 실시간 현황은 진행 중 활동의 최신 정보를 한눈에 보는 유용한 방법입니다 사람들은 배송 추적, 진행 중 게임의 점수 확인 예정 항공편의 정보 모니터링 등 다양한 방식으로 이를 활용합니다 푸시 알림으로 원격 업데이트를 보내면 실시간 현황에 항상 최신 정보가 있는지 확인할 수 있습니다 이 비디오에서는 실시간 현황에서 원격 푸시 알림으로 최신 정보를 유지하는 방법에 대해 설명합니다 그리고 실시간 현황의 업데이트를 브로드캐스트하는 새로운 기능을 사용하는 방법을 살펴봅니다 앱에서 브로드캐스트 업데이트를 구독하는 방법도 알아봅니다 브로드캐스트 푸시 알림을 보내 여러 기기에서 한 번에 실시간 현황을 업데이트하는 방법도 살펴봅니다 푸시 알림이 실시간 현황 업데이트에 사용되는 방법부터 시작하겠습니다 실시간 현황이 시작되면 앱은 ActivityKit에 푸시 토큰을 요청합니다 ActivityKit은 APNs(Apple Push Notification Service)에서 이 푸시 토큰을 수신하여 앱에 제공합니다 이 푸시 토큰은 기기에서 앱이 요청하는 각 실시간 현황에 대해 고유합니다 그 다음 앱은 이 고유 푸시 토큰을 앱 서버와 공유합니다
업데이트가 있으면 서버는 토큰과 페이로드와 함께 푸시 알림을 APNs에 보냅니다 또한 APNs는 페이로드를 각 기기에 전달합니다 각 업데이트는 사람마다 고유하므로 배송 추적 같은 사용 사례에 유용합니다 하지만 많은 사람이 동일 이벤트 업데이트를 적극적으로 보는 시나리오가 있습니다 예를 들어 수만 명의 팬이 좋아하는 경기의 점수를 계속 확인하고 있습니다 현재 이 시나리오에서는 앱 서버가 실시간 현황 관련 모든 사람의 푸시 토큰을 관리해야 합니다 업데이트가 있는 경우 서버는 동일 페이로드를 가진 각 푸시 토큰에 대해 개별 푸시 알림을 보냅니다 이제 이 경험을 더 쉽게 빌드하는 방법이 있습니다 iOS 및 iPadOS 18에서 APNs의 ‘브로드캐스트 푸시 알림‘으로 사람들에게 실시간 활동을 알릴 수 있습니다 ‘브로드캐스트 푸시 알림‘으로 활성화된 실시간 현황의 푸시 토큰을 저장할 필요가 없습니다 업데이트를 보내려면 푸시 알림을 한 번만 보내면 됩니다 APNs는 모든 기기에 안정적으로 정보를 전달해 모두가 최신 정보를 얻을 수 있게 합니다
한 번의 푸시 요청으로 많은 사람에게 다가갈 수 있는 채널이라는 새 개념이 있습니다
TV나 라디오 채널을 생각해 보세요 방송사가 채널을 통해 콘텐츠를 보내면 채널을 듣는 모든 사람이 동시에 동일한 콘텐츠를 수신합니다 많은 사람이 팔로우하는 이벤트에 브로드캐스트 푸시 알림을 사용하려면 각 이벤트를 고유 채널 ID로 식별되는 채널과 연결해야 합니다 예를 들어, 브로드캐스트 푸시 알림으로 점수 업데이트를 보낼 때 스포츠 경기마다 채널이 다릅니다 항공편 업데이트의 경우 각 항공편은 고유한 채널을 가집니다
이벤트 관련 업데이트가 필요한 각 실시간 현황은 채널의 푸시 알림을 구독합니다 이벤트 관련 업데이트를 보내려는 경우 페이로드와 함께 채널에 푸시 알림을 한 번만 보내면 됩니다 또 APNs에서 채널을 구독하는 모두에게 전달해 효율적으로 업데이트를 보내는 방법을 제공합니다 이제 브로드캐스트 푸시 알림으로 실시간 현황 업데이트를 보내는 방법을 알아봅니다 팀에서 친선 축구 경기가 열릴 예정이며 모든 사람이 경기를 확인할 수 있는 앱을 만듭니다
이 앱을 통해 팀원들이 실시간 현황을 시작하고 진행 중인 경기를 확인할 수 있습니다 많은 사람들이 점수를 계속 확인하므로 브로드캐스트 푸시 알림으로 모든 사람의 실시간 현황 업데이트를 보내는 데 최적의 사례입니다 브로드캐스트 푸시 알림을 시작하기 위해 이 경기에 대한 채널을 생성하고 고유한 채널 ID를 얻어야 합니다 이 정보는 앱에서 업데이트를 구독하고 서버에서 업데이트를 전송하는 데 사용됩니다 첫 번째는 앱의 새 브로드캐스트 기능을 활성화하는 것입니다 개발자 포털을 사용하여 수행할 수 있습니다 푸시 알림 아래 기능 목록에 브로드캐스트 기능을 켜는 새 토글이 있습니다 이를 마치면 앱의 첫 채널을 만들 준비가 된 것입니다 이를 위해 푸시 알림 콘솔을 사용합니다 이렇게 APNs와의 통합을 쉽게 테스트할 수 있습니다 콘솔이 브로드캐스트 푸시 알림을 지원하도록 확장됐습니다 새 채널을 만들기 위해 Channels 탭으로 이동하고
버튼을 탭하고 ‘New Channel‘을 선택합니다 이를 통해 새 채널, 환경 및 메시지 저장 공간 정책을 구성할 수 있습니다 이 기능을 아직 테스트하는 중이므로 개발 환경에서 이 채널을 만들겠습니다 메시지 저장 공간 정책에 No Storage, Most Recent Message의 두 옵션이 있습니다 Most Recent Message는 채널의 가장 최근 지연 메시지가 기기에 저장됩니다 No Storage는 푸시 알림이 전송될 때 APNs 연결 기기에만 업데이트가 전달되지만 더 많은 게시량이 허용됩니다 저희 팀 축구 경기는 이벤트가 많으므로 자주 업데이트를 보낼 것입니다 저장 공간 정책으로 No Storage를 선택합니다
Create Channel을 클릭하면 새 경기용 채널이 생겼습니다
이 채널 ID는 앱, 서버에서 업데이트용으로 사용하며 base64로 인코딩되어 각 채널에 대해 임의로 생성됩니다 이 페이지를 다시 방문하여 생성 요청 중에 선택한 구성을 확인할 수 있습니다
두 가지 방법으로 앱 채널을 만들 수 있습니다 푸시 알림 콘솔을 통해 브로드캐스트 푸시 알림을 쉽게 테스트하고 통합할 수 있습니다 프로덕션 환경에 배포 시 앱 서버는 채널 생성 요청을 APNs에 직접 보내야 합니다 자세한 내용은 APNs의 채널 관리 문서를 참고하세요 이제 예정된 축구 경기에 채널이 생겼습니다 이 채널 ID를 경기에 저장하고 앱과 공유해야 실시간 현황 시작 시 브로드캐스트 업데이트를 구독할 수 있습니다 제 앱에서 실시간 현황 시작 전에 원격 서버에서 경기 채널 ID를 요청합니다 제 앱에서 실시간 현황을 시작하는 함수를 만듭니다 먼저 경기용 원격 서버에서 받은 채널의 ID를 전달하겠습니다 현황의 속성과 초기 값을 만들겠습니다 마지막으로, 현황을 요청할 때 채널 ID를 포함하여 푸시 유형으로 ‘channel‘ 매개변수를 전달합니다 이 ID로 식별된 채널에서 이 활동의 푸시 업데이트를 구독하도록 ActivityKit에 지시합니다 훌륭하네요 브로드캐스트 푸시 알림 사용 준비가 거의 됐습니다 경기용 채널을 만들었고 팀원들이 실시간 현황을 시작하면 앱에서 생성한 채널 ID를 검색하여 채널의 업데이트를 구독합니다 이제 모든 기기를 한 번에 업데이트하기 위한 브로드캐스트 푸시 알림 전송 방법을 알아봅니다 경기가 시작됐고 홈팀이 초반에 앞서고 있어 즉시 공유하고 싶습니다 채널에 첫 브로드캐스트 푸시를 보내려면 다시 푸시 알림 콘솔을 사용하여 시작해 봅니다 푸시 알림 콘솔에서 channels 탭을 선택하고 이전에 경기용으로 만든 채널을 클릭합니다 New Notification을 클릭합니다 이 알림을 보내는 데 필요한 채널 ID 포함 일부 정보는 콘솔에 유용하게 입력됩니다 먼저 보내는 알림의 이름을 지정합니다
이 업데이트를 즉시 제공할 것이므로 High priority를 선택하겠습니다 페이로드 빌더로 업데이트에 사용할 콘텐츠를 추가합니다
먼저, 홈 팀의 점수를 추가해야 합니다
그 다음 원정 팀 점수를 제공합니다
실시간 현황에 간단한 업데이트 텍스트를 추가합니다
마지막으로 업데이트의 현재 타임스탬프를 추가합니다 그 다음 Send를 클릭합니다
이제 한 번의 푸시 알림으로 누구나 새 점수에 대한 업데이트를 받을 수 있습니다
브로드캐스트 푸시 알림에서 중요한 고려 대상은 채널 관리입니다 채널의 수명 주기와 실시간 현황은 독립적입니다 채널이 생성되면 활성 구독자가 없거나 모두 실시간 현황을 종료해도 채널 ID는 유효합니다 브로드캐스트 푸시 알림 전송에 사용 가능하고 채널을 구독하는 후속 실시간 현황이 있을 수 있습니다 하지만 총 활성 채널 수는 제한됩니다 서버는 채널 관리 API를 사용하여 오래되거나 미사용 채널이 더 이상 필요하지 않을 때 제거해야 합니다 축구의 경우 한 경기가 완료되면 채널이 더 필요하지 않으니 해당 채널을 삭제하겠습니다 푸시 알림 콘솔은 브로드캐스트 알림과 통합을 테스트하는 유용한 도구입니다 프로덕션 환경에 배포 시 서버는 채널 관리 및 브로드캐스트 푸시 알림 요청을 모두 APNs에 직접 전송해야 합니다 앱 채널을 생성, 삭제하려면 채널 관리 API를 사용해야 합니다 앱 서버는 새 APNs API에 직접 브로드캐스트 푸시 알림 알림 요청을 보내야 합니다 브로드캐스트 푸시 알림 요청을 보낼 때 인증서나 토큰 기반 APNs에 연결하는 데 사용하는 것과 동일한 인증 방법을 사용하게 됩니다 이 API에 대해 알아보려면 관련 문서를 참고하세요
이제 실시간 현황과 APNs의 브로드캐스트 업데이트를 사용하는 방법을 알았으니 앱의 기능을 켜세요 푸시 알림 콘솔을 사용해 첫 채널을 만들어 보세요 새 채널 푸시 유형으로 실시간 현황 업데이트를 구독하려면 앱에 ActivityKit을 활용하세요 채널의 브로드캐스트 푸시 알림이 실시간 현황을 업데이트합니다 마지막으로, APNs의 새 API를 서버에 통합하여 채널을 관리하고 브로드캐스트 푸시 알림을 직접 보낼 수 있습니다 여러분이 앱에 어떻게 브로드캐스트 푸시 알림을 새롭게 활용하실지 무척 기대되네요 시청해 주셔서 감사합니다!
-
-
7:50 - Subscribe a Live Activity to broadcast push notification updates
// Request a Live Activity and subscribe to broadcast push notifications import ActivityKit func startLiveActivity(channelId: String) { let gameAttributes = GameAttributes() let initialState = GameAttributes.ContentState( home: 0, away: 0, update: "First Half" ) try Activity.request( attributes: gameAttributes, content: .init(state: initialState, staleDate: nil), pushType: .channel(channelId) ) }
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.