SDK di trasmissione IVS: scambio di token | Streaming in tempo reale
Lo scambio di token consente di effettuare l'aggiornamento o il downgrade delle funzionalità dei token dei partecipanti e di aggiornare gli attributi dei token all'interno dell'SDK per la trasmissione per dispositivi mobili, senza richiedere ai partecipanti di riconnettersi. Questa funzione si rivela utile in scenari come il co-hosting, in cui i partecipanti possono iniziare con funzionalità riservate ai soli abbonati e solo in seguito avranno bisogno di accedere a funzionalità di pubblicazione.
Restrizioni:
Lo scambio di token funziona solo con i token creati sul server utilizzando una coppia di chiavi. Non funziona con i token creati tramite l'API CreateParticipantToken.
Se utilizzi lo scambio di token per modificare gli attributi che determinano i layout di composizione lato server (ad esempio, featuredParticipantAttribute e participantOrderAttribute), il layout di una composizione attiva non verrà aggiornato finché il partecipante non si riconnette.
Scambio di token
Lo scambio di token è semplice: chiama l'API exchangeToken sull'oggetto Stage / IVSStage e indica il nuovo token. Se le capabilities del nuovo token sono diverse da quelle del token precedente, le funzionalità del nuovo token vengono valutate immediatamente. Ad esempio, se il token precedente non ne aveva la funzionalità di publish, mentre il nuovo token ne è dotata, vengono invocate le funzioni della strategia della fase per la pubblicazione, che consentono all'applicazione host di decidere se pubblicare subito con la nuova funzionalità o attendere. Lo stesso vale per le funzionalità eliminate: se il token precedente aveva la funzionalità di publish, mentre il nuovo token non ne è dotata, il partecipante annulla immediatamente la pubblicazione senza invocare le funzioni della strategia della fase per la pubblicazione.
Quando si scambia un token, il token precedente e quello nuovo devono avere gli stessi valori per i seguenti campi di payload:
topicresourcejtiwhip_urlevents_url
Questi campi non sono modificabili. Lo scambio di un token che modifica un campo non modificabile comporta il rifiuto immediato dello scambio da parte dell'SDK.
Sarà invece possibile modificare i campi rimanenti, tra i quali:
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)
Ricezione degli aggiornamenti
Una funzione in StageRenderer / IVSStageRenderer riceve aggiornamenti sugli elementi già pubblicati dai partecipanti remoti che si scambiano i token per aggiornare i propri userId o i propri attributes. Se i partecipanti remoti non hanno già pubblicato elementi, i rispettivi userId e attributes verranno esposti tramite le funzionionParticipantJoined / participantDidJoin esistenti del renderer solo se alla fine effettuano la pubblicazione.
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. } }
Visibilità degli aggiornamenti
Quando un partecipante scambia un token per aggiornare il proprio userId o i propri attributes, la visibilità di queste modifiche dipende dallo stato di pubblicazione corrente:
Se il partecipante non ha pubblicato elementi: l'aggiornamento viene elaborato in modo invisibile. Se alla fine effettua la pubblicazione, tutti gli SDK riceveranno gli
userIde gliattributesaggiornati nell'ambito dell'evento di pubblicazione iniziale.Se il partecipante ha già pubblicato elementi: l'aggiornamento viene trasmesso immediatamente. Tuttavia, solo gli SDK per dispositivi mobili v1.37.0+ ricevono la notifica. I partecipanti con l'SDK per la versione web, gli SDK per dispositivi mobili precedenti e la composizione lato server non vedono la modifica finché il partecipante non annulla la pubblicazione e pubblica nuovamente l'elemento.
Questa tabella illustra la matrice di supporto:
| Stato del partecipante | Osservatore: SDK per dispositivi mobili v1.37.0+ | Osservatore: SDK per dispositivi mobili precedenti SDK per versione web, composizione lato server |
|---|---|---|
| Non pubblica elementi (processo avviato) | ✅ Visibile (in caso di pubblicazione tramite un evento a cui il partecipante ha preso parte) | ✅ Visibile (in caso di pubblicazione tramite un evento a cui il partecipante ha preso parte) |
| Ha pubblicato elementi (nessuna nuova pubblicazione) | ✅ Visibile (immediatamente tramite l'evento aggiornato dei metadati dei partecipanti) | ❌ Non visibile |
| Ha pubblicato elementi (annullamento e nuova pubblicazione) | ✅ Visibile (immediatamente tramite l'evento aggiornato dei metadati dei partecipanti) | ⚠️ Visibilità condizionata (solo in caso di nuova pubblicazione tramite un evento a cui il partecipante ha preso parte) |