IVS Broadcast SDK: 토큰 교환 | 실시간 스트리밍
토큰 교환을 사용하면 참가자가 다시 연결할 필요 없이 모바일 Broadcast SDK 내에서 참가자 토큰 기능을 업그레이드하거나 다운그레이드하고 토큰 속성을 업데이트할 수 있습니다. 이는 참가자가 구독 전용 기능으로 시작하여 나중에 게시 기능이 필요할 수 있는 공동 호스팅과 같은 시나리오에 유용합니다.
제한:
토큰 교환은 키 페어를 사용하여 서버에서 생성된 토큰에서만 작동합니다. CreateParticipantToken API를 통해 생성된 토큰에서는 작동하지 않습니다.
토큰 교환을 사용하여 서버 측 구성 레이아웃(예: featuredParticipantAttribute 및 participantOrderAttribute)을 구동하는 속성을 변경하는 경우 참가자가 다시 연결될 때까지 활성 구성의 레이아웃이 업데이트되지 않습니다.
토큰 교환
토큰 교환은 간단합니다. Stage / IVSStage 객체에서 exchangeToken API를 호출하고 새 토큰을 제공합니다. 새 토큰의 capabilities가 이전 토큰의 기능과 다른 경우 새 토큰의 기능이 즉시 평가됩니다. 예를 들어 이전 토큰에 publish 기능이 없고 새 토큰에 기능이 있는 경우 게시를 위한 스테이지 전략 함수가 호출되어 호스트 애플리케이션이 새 기능으로 즉시 게시할지 또는 기다릴지 결정할 수 있습니다. 제거된 기능에도 마찬가지입니다. 이전 토큰에 publish 기능이 있고 새 토큰에 기능이 없는 경우 참가자는 게시를 위한 스테이지 전략 함수를 호출하지 않고 즉시 게시를 취소합니다.
토큰을 교환할 때 이전 토큰과 새 토큰은 다음 페이로드 필드에 대해 동일한 값을 가져야 합니다.
topicresourcejtiwhip_urlevents_url
이러한 필드는 변경할 수 없습니다. 변경할 수 없는 필드를 수정하는 토큰을 교환하면 SDK가 교환을 즉시 거부합니다.
다음을 포함하여 나머지 필드를 변경할 수 있습니다.
attributescapabilitiesuser_idiatexp
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 렌더러 함수를 통해 업데이트된 userId 및 attributes가 노출되었습니다.
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 초기 게시 이벤트의 일부로 업데이트된
userId및attributes를 수신합니다.참가자가 이미 게시 중인 경우: 업데이트가 즉시 브로드캐스트됩니다. 그러나 모바일 SDK v1.37.0 이상만 알림을 받습니다. 웹 SDK, 이전 모바일 SDK 및 서버 측 구성의 참가자는 참가자가 게시를 취소하고 다시 게시할 때까지 변경 사항을 볼 수 없습니다.
이 표에서는 지원 매트릭스를 명확히 설명합니다.
| 이벤트 참가자 | 옵저버: Mobile SDK 1.37.0 이상 | 옵저버: 이전 모바일 SDK, 웹 SDK, 서버 측 구성 |
|---|---|---|
| 게시하지 않음(이후 시작) | ✅ 보임(참가자가 참여한 이벤트를 통해 게시 시) | ✅ 보임(참가자가 참여한 이벤트를 통해 게시 시) |
| 이미 게시 중(다시 게시하지 않음) | ✅ 보임(참가자 메타데이터 업데이트 이벤트를 통해 즉시 표시) | ❌ 보이지 않음 |
| 이미 게시 중(게시 취소 및 다시 게시) | ✅ 보임(참가자 메타데이터 업데이트 이벤트를 통해 즉시 표시) | ⚠️ 최종적으로 보임(참가자가 참여한 이벤트를 통해 다시 게시 시) |