View a markdown version of this page

IVS-Broadcast-SDK: Token-Austausch | Echtzeit-Streaming - Amazon IVS

IVS-Broadcast-SDK: Token-Austausch | Echtzeit-Streaming

Der Token-Austausch ermöglicht es Ihnen, die Funktionen von Teilnehmer-Tokens zu erweitern oder einzuschränken und Token-Attribute innerhalb des Broadcast-SDK zu aktualisieren, ohne dass die Teilnehmer erneut eine Verbindung herstellen müssen. Dies ist nützlich für Szenarien wie Co-Hosting, bei denen Teilnehmer zunächst nur über Subscribe-Funktionen verfügen und später Veröffentlichungsfunktionen benötigen.

Der Token-Austausch wird sowohl im SDK für mobile Anwendungen als auch im SDK für Web-Übertragungen unterstützt. Wenn ein Teilnehmer ein Token austauscht, erkennt die serverseitige Zusammensetzung die aktualisierten Attribute in Echtzeit und passt das Layout automatisch an – beispielsweise durch Neuzuweisung des hervorgehobenen Slots, Neuanordnung der Teilnehmer oder Verschieben eines Teilnehmers in die Bild-in-Bild-Überlagerung – ohne dass eine erneute Verbindung erforderlich ist.

Einschränkung: Der Token-Austausch funktioniert nur mit Token, die auf Ihrem Server mit einem Schlüsselpaar erstellt wurden. Er funktioniert nicht mit Token, die über die CreateParticipantToken-API erstellt wurden.

Teilnehmer-Token

Der Token-Austausch ist unkompliziert: Rufen Sie die exchangeToken-API für das Stage/IVSStage-Objekt auf und stellen Sie das neue Token bereit. Wenn sich die capabilities des neuen Tokens von denen des vorherigen Tokens unterscheiden, werden die Fähigkeiten des neuen Tokens sofort bewertet. Wenn das vorherige Token beispielsweise nicht über die Fähigkeit publish verfügte, das neue Token jedoch schon, werden die Stage-Strategy-Funktionen für die Veröffentlichung aufgerufen, sodass die Hostanwendung entscheiden kann, ob sie mit der neuen Funktion sofort veröffentlichen oder warten möchte. Das Gleiche gilt für entfernte Funktionen: Wenn das vorherige Token über die Fähigkeit publish verfügte und das neue Token nicht, macht der Teilnehmer die Veröffentlichung sofort rückgängig, ohne die Funktionen der Phasenstrategie für die Veröffentlichung aufzurufen.

Beim Token-Austausch müssen das vorherige und das neue Token dieselben Werte für die folgenden Nutzdaten-Felder haben:

  • topic

  • resource

  • jti

  • whip_url

  • events_url

Diese Felder sind unveränderlich. Der Austausch eines Tokens, das ein unveränderliches Feld ändert, führt dazu, dass das SDK den Austausch sofort ablehnt.

Die übrigen Felder können geändert werden, darunter:

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

Web

const stage = new Stage(originalToken, strategy); await stage.join(); await stage.exchangeToken(newToken);

Empfangen von Updates

Eine Funktion in StageRenderer/IVSStageRenderer empfängt Updates über bereits veröffentlichte Remote-Teilnehmer, die ihre Token austauschen, um ihre userId oder attributes zu aktualisieren. Fernteilnehmer, die noch nicht veröffentlichen, erhalten ihre userId und attributes aktualisiert und über die vorhandenen onParticipantJoined/participantDidJoin-Renderer-Funktionen angezeigt, wenn sie schließlich veröffentlichen.

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

Web

stage.on(StageEvents.STAGE_PARTICIPANT_METADATA_CHANGED, (participantInfo: StageParticipantInfo) => { // participantInfo properties will be updated with the changed properties } );

Sichtbarkeitsstatus

Wenn ein Teilnehmer ein Token austauscht, um seine userId oder attributes zu aktualisieren, hängt die Sichtbarkeit dieser Änderungen von seinem aktuellen Veröffentlichungsstatus ab:

  • Wenn der Teilnehmer nicht veröffentlicht: Die Aktualisierung wird im Hintergrund verarbeitet. Wenn er irgendwann veröffentlicht, erhalten alle SDKs die aktualisierte userId und attributes als Teil der ersten Veröffentlichung.

  • Wenn der Teilnehmer bereits veröffentlicht: Die Aktualisierung wird sofort an Teilnehmer übertragen, die mobile SDKs ab Version 1.37.0, das Web-SDK und die serverseitige Zusammensetzung verwenden. Teilnehmer, die ältere mobile SDKs verwenden, sehen die Änderung erst, wenn sie die Veröffentlichung rückgängig machen und erneut veröffentlichen.

In dieser Tabelle wird die Unterstützungsmatrix verdeutlicht:

Teilnehmerstatus Betrachter: Mobile SDK 1.37.0+, Web-SDK, serverseitige Zusammensetzung Betrachter: Ältere mobile SDKs
Wird nicht veröffentlicht (startet dann) ✅ Sichtbar (bei Veröffentlichung über eine Veranstaltung, der ein Teilnehmer beigetreten ist) ✅ Sichtbar (bei Veröffentlichung über eine Veranstaltung, der ein Teilnehmer beigetreten ist)
Bereits veröffentlicht (wird nie erneut veröffentlicht) ✅ Sichtbar (sofort über ein durch Metadaten der Teilnehmer aktualisiertes Ereignis) ❌ Nicht sichtbar
Bereits veröffentlicht (Veröffentlichung rückgängig gemacht und erneut veröffentlicht) ✅ Sichtbar (sofort über ein durch Metadaten der Teilnehmer aktualisiertes Ereignis) ⚠️ Letztendlich sichtbar (bei erneuten Veröffentlichung über eine Veranstaltung, der ein Teilnehmer beigetreten ist)