SDK de transmisión de IVS: intercambio de tokens | Transmisión en tiempo real - Amazon IVS

SDK de transmisión de IVS: intercambio de tokens | Transmisión en tiempo real

El intercambio de tokens le permite mejorar o reducir las capacidades de los tokens participantes y actualizar los atributos de los tokens en el SDK de transmisión móvil, sin necesidad de que los participantes se vuelvan a conectar. Esto es útil en situaciones como el coalojamiento, en las que los participantes pueden comenzar con capacidades solo de suscripción y posteriormente necesitar capacidades de publicación.

Limitaciones:

  • El intercambio de tokens solo funciona con tokens creados en su servidor mediante un par de claves. No funciona con los tokens creados a través de la API CreateParticipantToken.

  • Si utiliza el intercambio de tokens para cambiar los atributos que rigen las maquetaciones de composición del servidor (como featuredParticipantAttribute y participantOrderAttribute), la maquetación de una composición activa no se actualizará hasta que el participante vuelva a conectarse.

Intercambio de tokens

El intercambio de tokens es sencillo: llame a la API exchangeToken del objeto Stage / IVSStage y proporciona el nuevo token. Si las capabilities del nuevo token son diferentes a las del token anterior, las capacidades del nuevo token se evalúan inmediatamente. Por ejemplo, si el token anterior no tenía la capacidad publish y el nuevo sí, se invocan las funciones de la estrategia de escenario para la publicación, lo que permite a la aplicación anfitriona decidir si quiere publicar de inmediato con la nueva capacidad o esperar. Lo mismo ocurre con las capacidades eliminadas: si el token anterior tenía la capacidad publish y el nuevo no, el participante anula de inmediato la publicación sin invocar las funciones de estrategia de la fase de publicación.

Al intercambiar un token, el token anterior y el nuevo deben tener los mismos valores para los siguientes campos de carga útil:

  • topic

  • resource

  • jti

  • whip_url

  • events_url

Estos campos son inmutables. Si se intercambia un token que modifica un campo inmutable, el SDK rechaza de manera inmediata el intercambio.

Los campos restantes se pueden cambiar, incluidos:

  • 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)

Recepción de actualizaciones

Una función en StageRenderer / IVSStageRenderer recibe actualizaciones sobre los participantes remotos ya publicados que intercambian sus tokens para actualizar su userId o attributes. Los participantes remotos que aún no publiquen expondrán sus userId y attributes actualizados a través de las funciones de renderizado onParticipantJoined / participantDidJoin existentes si finalmente publican

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. } }

Visibilidad de actualizaciones

Cuando un participante intercambia un token para actualizar su userId o attributes, la visibilidad de estos cambios depende de su estado de publicación actual:

  • Si el participante no publica: la actualización se procesa de forma silenciosa. Si finalmente se publican, todos los SDK recibirán la información actualizada de userId y attributes como parte del evento de publicación inicial.

  • Si el participante ya está publicando: la actualización se difunde de forma inmediata. Sin embargo, solo los SDK para móviles de la versión 1.37.0 en adelante reciben la notificación. Los participantes que utilizan el SDK web, los SDK móviles más antiguos y la composición del servidor no ven el cambio hasta que el participante anula la publicación y la vuelve a publicar.

Esta tabla aclara la matriz de soporte:

Estado del participante Observer: SDK para móviles, versión 1.37.0 en adelante Observer: versiones anteriores del SDK para móviles, SDK web, composición del servidor
No se publica (luego comienza) ✅ Visible (al publicarse cuando el participante se haya unido al evento) ✅ Visible (al publicarse cuando el participante se haya unido al evento)
Ya publica (nunca vuelve a publicar) ✅ Visible (inmediatamente a través del evento actualizado de los metadatos de los participantes) ❌ No visible
Ya publica (deja de publicar y vuelve a publicar) ✅ Visible (inmediatamente a través del evento actualizado de los metadatos de los participantes) ✅ Visible más adelante (cuando vuelve a publicar a través del evento de incorporación del participante)