

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# SDK Siaran IVS: Pertukaran Token \| Streaming Waktu Nyata
<a name="broadcast-mobile-token-exchange"></a>

Pertukaran token memungkinkan Anda untuk meningkatkan atau menurunkan kemampuan token peserta dan memperbarui atribut token dalam SDK siaran, tanpa mengharuskan peserta untuk terhubung kembali. Ini berguna untuk skenario seperti co-hosting, di mana peserta dapat memulai dengan kemampuan berlangganan saja dan kemudian membutuhkan kemampuan publikasi.

Pertukaran token didukung di siaran seluler dan web SDKs. Saat peserta bertukar token, komposisi sisi server mendeteksi atribut yang diperbarui secara real time dan secara otomatis menyesuaikan tata letak — misalnya, menetapkan kembali slot unggulan, menyusun ulang peserta, atau memindahkan peserta ke overlay — tanpa memerlukan sambungan ulang. picture-in-picture 

Batasan: Pertukaran token hanya berfungsi dengan token yang dibuat di server Anda menggunakan [key pair](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/getting-started-distribute-tokens.html#getting-started-distribute-tokens-self-signed). Ini tidak berfungsi dengan token yang dibuat melalui [CreateParticipantToken API](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateParticipantToken.html).

## Bertukar Token
<a name="broadcast-mobile-token-exchange-exchanging-tokens"></a>

Pertukaran token sangat mudah: panggil `exchangeToken` API pada `IVSStage` objek`Stage`/dan berikan token baru. Jika token baru berbeda dari token sebelumnya, kemampuan token baru segera dievaluasi. `capabilities` Misalnya, jika token sebelumnya tidak memiliki `publish` kemampuan dan token baru melakukannya, fungsi strategi panggung untuk penerbitan dipanggil, memungkinkan aplikasi host untuk memutuskan apakah mereka ingin segera mempublikasikan dengan kemampuan baru, atau menunggu. Hal yang sama berlaku untuk kemampuan yang dihapus: jika token sebelumnya memiliki `publish` kemampuan dan token baru tidak, peserta segera membatalkan publikasi tanpa menggunakan fungsi strategi panggung untuk penerbitan.

Saat bertukar token, token sebelumnya dan baru harus memiliki nilai yang sama untuk bidang payload berikut: 
+ `topic`
+ `resource`
+ `jti`
+ `whip_url`
+ `events_url`

Bidang ini tidak dapat diubah. Bertukar token yang memodifikasi bidang yang tidak dapat diubah menghasilkan SDK segera menolak pertukaran.

Bidang yang tersisa dapat diubah, termasuk:
+ `attributes`
+ `capabilities`
+ `user`
+ `_id`
+ `iat`
+ `exp`

### iOS
<a name="broadcast-mobile-token-exchange-exchanging-tokens-ios"></a>



```
let stage = try IVSStage(token: originalToken, strategy: self)
stage.join()
stage.exchangeToken(newToken)
```

### Android
<a name="broadcast-mobile-token-exchange-exchanging-tokens-android"></a>



```
val stage = Stage(context, originalToken, strategy)
stage.join()
stage.exchangeToken(newToken)
```

### Web
<a name="broadcast-web-token-exchange-exchanging-tokens"></a>



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

## Menerima Pembaruan
<a name="broadcast-mobile-token-exchange-receiving-updates"></a>

Fungsi di`StageRenderer`/`IVSStageRenderer`menerima pembaruan tentang peserta jarak jauh yang sudah dipublikasikan yang bertukar token mereka untuk memperbarui atau. `userId` `attributes` Peserta jarak jauh yang belum menerbitkan akan diperbarui `userId` dan `attributes` diekspos melalui fungsi`onParticipantJoined`/`participantDidJoin`renderer yang ada jika mereka akhirnya mempublikasikannya.

### iOS
<a name="broadcast-mobile-token-exchange-receiving-updates-ios"></a>



```
class MyStageRenderer: NSObject, IVSStageRenderer {
    func stage(_ stage: IVSStage, participantMetadataDidUpdate participant: IVSParticipantInfo) {
        // participant will be a new IVSParticipantInfo instance with updated properties.
    }
}
```

### Android
<a name="broadcast-mobile-token-exchange-receiving-updates-android"></a>



```
private val stageRenderer = object : StageRenderer {
    override fun onParticipantMetadataUpdated(stage: Stage, participantInfo: ParticipantInfo) {
        // participantInfo will be a new ParticipantInfo instance with updated properties.
    }
}
```

### Web
<a name="broadcast-web-token-exchange-receiving-updates"></a>



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

## Visibilitas Pembaruan
<a name="broadcast-mobile-token-exchange-visibility"></a>

Saat peserta menukar token untuk memperbarui `userId` atau`attributes`, visibilitas perubahan ini bergantung pada status penerbitan mereka saat ini: 
+ **Jika peserta *tidak* menerbitkan:** Pembaruan diproses secara diam-diam. Jika mereka akhirnya mempublikasikan, semua SDKs akan menerima yang diperbarui `userId` dan `attributes` sebagai bagian dari acara publikasi awal.
+ **Jika peserta *sudah* menerbitkan:** Pembaruan disiarkan segera untuk peserta yang menggunakan seluler SDKs v1.37.0\+, SDK web, dan komposisi sisi server. Peserta yang menggunakan ponsel lama SDKs tidak melihat perubahan sampai peserta tidak menerbitkan dan menerbitkan kembali.

Tabel ini menjelaskan matriks dukungan:


| Negara Peserta | Pengamat: SDK Seluler 1.37.0\+, SDK Web, Komposisi Sisi Server  | Pengamat: Ponsel Lama SDKs | 
| --- | --- | --- | 
| Tidak menerbitkan (lalu dimulai) | ✅ Terlihat (saat dipublikasikan melalui acara yang bergabung dengan peserta) | ✅ Terlihat (saat dipublikasikan melalui acara yang bergabung dengan peserta) | 
| Sudah menerbitkan (tidak pernah menerbitkan kembali) | ✅ Terlihat (segera melalui acara yang diperbarui metadata peserta) | ❌ Tidak Terlihat | 
| Sudah menerbitkan (tidak menerbitkan dan menerbitkan kembali) | ✅ Terlihat (segera melalui acara yang diperbarui metadata peserta) | ⚠️ Akhirnya Terlihat (saat dipublikasikan ulang melalui acara yang bergabung dengan peserta) | 