SDK de transmissão do IVS: troca de tokens | streaming em tempo real - Amazon IVS

SDK de transmissão do IVS: troca de tokens | streaming em tempo real

A troca de tokens permite que você faça upgrade ou downgrade dos recursos do token do participante e atualize os atributos do token no SDK de transmissão móvel, sem exigir que os participantes se reconectem. Isso é útil em cenários como co-hospedagem, em que os participantes podem começar com recursos somente para assinantes e, posteriormente, precisarem de recursos de publicação.

Limitações:

  • A troca de tokens só funciona com tokens criados em seu servidor usando um par de chaves. Ela não funciona com tokens criados por meio da API CreateParticipantToken.

  • Se você usar a troca de tokens para alterar os atributos que impulsionam os layouts de composição do servidor (como featuredParticipantAttribute e participantOrderAttribute), o layout de uma composição ativa não será atualizado até que o participante se reconecte.

Troca de tokens

A troca de tokens é simples: chame a API exchangeToken no objeto Stage/IVSStage e forneça o novo token. Se os capabilities do novo token forem diferentes dos do token anterior, os recursos do novo token serão avaliados imediatamente. Por exemplo, se o token anterior não tiver o recurso publish e o novo token tiver, as funções de estratégia de estágio para publicação serão invocadas, permitindo que a aplicação de host decida se deseja publicar imediatamente com o novo recurso ou esperar. O mesmo vale para os recursos removidos: se o token anterior tinha a capacidade publish e o novo token não, o participante imediatamente cancela a publicação sem invocar as funções de estratégia de palco para publicação.

Ao trocar um token, o token anterior e o novo devem ter os mesmos valores para os seguintes campos de carga útil:

  • topic

  • resource

  • jti

  • whip_url

  • events_url

Esses campos são imutáveis. A troca de um token que modifica um campo imutável faz com que o SDK rejeite imediatamente a troca.

Os campos restantes podem ser alterados, incluindo:

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

Receber atualizações

Uma função em StageRenderer/IVSStageRenderer recebe atualizações sobre participantes remotos já publicados que trocam seus tokens para atualizar seu userId ou attributes. Participantes remotos que ainda não estão publicando terão seus userId e attributes atualizados expostos por meio das funções de renderizador onParticipantJoined/participantDidJoinexistentes se eventualmente publicarem.

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

Visibilidade das atualizações

Quando um participante troca um token para atualizar seu userId ou attributes, a visibilidade dessas alterações depende do estado atual de publicação:

  • Se o participante não estiver publicando: a atualização será processada silenciosamente. Se eles acabarem sendo publicados, todos os SDKs receberão a atualização userId e attributes como parte do evento de publicação inicial.

  • Se o participante estiver publicando: a atualização será transmitida imediatamente. No entanto, apenas os SDKs para dispositivos móveis versão 1.37.0 ou mais recente recebem a notificação. Os participantes do SDK da web, dos SDKs móveis mais antigos e da composição do servidor não veem a alteração até que o participante cancele a publicação e republique.

Esta tabela esclarece a matriz de suporte:

Estado do participante Observador: SDK móvel 1.37.0 ou mais recente Observador: SDKs móveis mais antigos, SDK da web, composição do servidor
Não está publicando (depois começa) ✅ Visível (na publicação por meio do evento participante que ingressou) ✅ Visível (na publicação por meio do evento participante que ingressou)
Já está publicando (nunca republica) ✅ Visível (imediatamente por meio do evento atualizado de metadados do participante) ❌ Não visível
Já está publicando (cancela e republica) ✅ Visível (imediatamente por meio do evento atualizado de metadados do participante) ⚠️ Com o tempo, visível (após republicação por meio do evento em que o participante ingressou)