IVS Broadcast SDK: 토큰 교환 | 실시간 스트리밍 - Amazon IVS

IVS Broadcast SDK: 토큰 교환 | 실시간 스트리밍

토큰 교환을 사용하면 참가자가 다시 연결할 필요 없이 모바일 Broadcast SDK 내에서 참가자 토큰 기능을 업그레이드하거나 다운그레이드하고 토큰 속성을 업데이트할 수 있습니다. 이는 참가자가 구독 전용 기능으로 시작하여 나중에 게시 기능이 필요할 수 있는 공동 호스팅과 같은 시나리오에 유용합니다.

제한:

  • 토큰 교환은 키 페어를 사용하여 서버에서 생성된 토큰에서만 작동합니다. CreateParticipantToken API를 통해 생성된 토큰에서는 작동하지 않습니다.

  • 토큰 교환을 사용하여 서버 측 구성 레이아웃(예: featuredParticipantAttribute 및 participantOrderAttribute)을 구동하는 속성을 변경하는 경우 참가자가 다시 연결될 때까지 활성 구성의 레이아웃이 업데이트되지 않습니다.

토큰 교환

토큰 교환은 간단합니다. Stage / IVSStage 객체에서 exchangeToken API를 호출하고 새 토큰을 제공합니다. 새 토큰의 capabilities가 이전 토큰의 기능과 다른 경우 새 토큰의 기능이 즉시 평가됩니다. 예를 들어 이전 토큰에 publish 기능이 없고 새 토큰에 기능이 있는 경우 게시를 위한 스테이지 전략 함수가 호출되어 호스트 애플리케이션이 새 기능으로 즉시 게시할지 또는 기다릴지 결정할 수 있습니다. 제거된 기능에도 마찬가지입니다. 이전 토큰에 publish 기능이 있고 새 토큰에 기능이 없는 경우 참가자는 게시를 위한 스테이지 전략 함수를 호출하지 않고 즉시 게시를 취소합니다.

토큰을 교환할 때 이전 토큰과 새 토큰은 다음 페이로드 필드에 대해 동일한 값을 가져야 합니다.

  • topic

  • resource

  • jti

  • whip_url

  • events_url

이러한 필드는 변경할 수 없습니다. 변경할 수 없는 필드를 수정하는 토큰을 교환하면 SDK가 교환을 즉시 거부합니다.

다음을 포함하여 나머지 필드를 변경할 수 있습니다.

  • attributes

  • capabilities

  • user

  • _id

  • iat

  • exp

iOS

let stage = try IVSStage(token: originalToken, strategy: self) stage.join() stage.exchangeToken(newToken)

Android

val stage = Stage(context, originalToken, strategy) stage.join() stage.exchangeToken(newToken)

업데이트 수신

StageRenderer/IVSStageRenderer의 함수는 토큰을 교환하여 userId 또는 attributes를 업데이트하는 이미 게시된 원격 참가자에 대한 업데이트를 수신합니다. 아직 게시하지 않은 원격 참가자에게 최종적으로 게시하는 경우 기존 onParticipantJoined / participantDidJoin 렌더러 함수를 통해 업데이트된 userIdattributes가 노출되었습니다.

iOS

class MyStageRenderer: NSObject, IVSStageRenderer { func stage(_ stage: IVSStage, participantMetadataDidUpdate participant: IVSParticipantInfo) { // participant will be a new IVSParticipantInfo instance with updated properties. } }

Android

private val stageRenderer = object : StageRenderer { override fun onParticipantMetadataUpdated(stage: Stage, participantInfo: ParticipantInfo) { // participantInfo will be a new ParticipantInfo instance with updated properties. } }

업데이트 가시성

참가자가 토큰을 교환하여 userId 또는 attributes를 업데이트하는 경우 이러한 변경 사항의 표시 여부는 현재 게시 상태에 따라 달라집니다.

  • 참가자가 게시하지 않는 경우: 업데이트가 자동으로 처리됩니다. 최종적으로 게시하는 경우 모든 SDK 초기 게시 이벤트의 일부로 업데이트된 userIdattributes를 수신합니다.

  • 참가자가 이미 게시 중 경우: 업데이트가 즉시 브로드캐스트됩니다. 그러나 모바일 SDK v1.37.0 이상만 알림을 받습니다. 웹 SDK, 이전 모바일 SDK 및 서버 측 구성의 참가자는 참가자가 게시를 취소하고 다시 게시할 때까지 변경 사항을 볼 수 없습니다.

이 표에서는 지원 매트릭스를 명확히 설명합니다.

이벤트 참가자 옵저버: Mobile SDK 1.37.0 이상 옵저버: 이전 모바일 SDK, 웹 SDK, 서버 측 구성
게시하지 않음(이후 시작) ✅ 보임(참가자가 참여한 이벤트를 통해 게시 시) ✅ 보임(참가자가 참여한 이벤트를 통해 게시 시)
이미 게시 중(다시 게시하지 않음) ✅ 보임(참가자 메타데이터 업데이트 이벤트를 통해 즉시 표시) ❌ 보이지 않음
이미 게시 중(게시 취소 및 다시 게시) ✅ 보임(참가자 메타데이터 업데이트 이벤트를 통해 즉시 표시) ⚠️ 최종적으로 보임(참가자가 참여한 이벤트를 통해 다시 게시 시)