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 für Teilnehmer-Tokens zu aktualisieren oder herabzustufen und Token-Attribute innerhalb des Mobile 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.

Einschränkungen:

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

  • Wenn Sie den Token-Austausch verwenden, um Attribute zu ändern, die serverseitige Zusammensetzungslayouts steuern (wie featuredParticipantAttribute und participantOrderAttribute), wird das Layout einer aktiven Zusammensetzung erst aktualisiert, wenn der Teilnehmer wieder eine Verbindung herstellt.

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)

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

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.

  • Falls der Teilnehmer bereits veröffentlicht: Das Update wird sofort übertragen. Allerdings erhalten nur mobile SDKs v1.37.0+ die Benachrichtigung. Teilnehmer mit dem Web-SDK, älteren mobilen SDKs und der serverseitigen Zusammensetzung sehen die Änderung erst, wenn der Teilnehmer die Veröffentlichung rückgängig macht und sie erneut veröffentlicht.

In dieser Tabelle wird die Unterstützungsmatrix verdeutlicht:

Teilnehmerstatus Beobachter: Mobile SDK 1.37.0+ Beobachter: Ältere mobile SDKs, Web-SDK, serverseitige Zusammensetzung
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)