INTEGRITY Dokumentace

Správa účastníků relace

Pomocí ovládacích prvků hostitele RealtimeKit můžete spravovat ostatní účastníky v živé relaci. Můžete ztlumit zvuk nebo video, připnout účastníka nebo odebrat účastníky z relace. Tyto akce vyžadují konkrétní oprávnění ovládání hostitele povolená v objektu Preset. Před zobrazením ovládacích prvků UI nebo voláním těchto metod ověřte, že má místní účastník potřebná oprávnění. V tomto průvodci lokální účastník odkazuje na uživatele, který dané akce provádí.

Vyberte vzdáleného účastníka

Chcete-li provádět akce s konkrétním účastníkem, musíte nejprve načíst jeho objekt Participant. Vzdálení účastníci (ostatní účastníci) jsou dostupní v meeting.participants. Místní účastník je dostupný v meeting.self. Podrobnosti najdete v Vysvětlení objektu Meeting s podrobnostmi.

const joinedParticipants = meeting.participants.joined.toArray();
const participant = joinedParticipants[0];
if (!participant) {
	// No remote participants are currently joined.
}

Chcete-li provádět akce s konkrétním účastníkem, musíte nejprve načíst jeho objekt Participant. Vzdálení účastníci (ostatní účastníci) jsou dostupní v meeting.participants. Místní účastník je dostupný v meeting.self. Podrobnosti najdete v Vysvětlení objektu Meeting s podrobnostmi.

const joinedParticipants = meeting.participants.joined.toArray();
const participant = joinedParticipants[0];
if (!participant) {
	// No remote participants are currently joined.
}

Chcete-li provádět akce s konkrétním účastníkem, musíte nejprve načíst jeho objekt Participant. Vzdálení účastníci (ostatní účastníci) jsou dostupní v meeting.participants. Místní účastník je dostupný v meeting.self. Podrobnosti najdete v Vysvětlení objektu Meeting s podrobnostmi.

const joinedParticipants = meeting.participants.joined.toArray();
const participant = joinedParticipants[0];
if (!participant) {
	// No remote participants are currently joined.
}

Chcete-li provádět akce s konkrétním účastníkem, načtěte jeho objekt Participant z participants vlastnost. Vzdálení účastníci jsou dostupní v meeting.participants.joined. Místní účastník je dostupný v meeting.localUser.

val joinedParticipants = meeting.participants.joined
val participant = joinedParticipants.firstOrNull()
if (participant == null) {
	// No remote participants are currently joined.
}

Chcete-li provádět akce s konkrétním účastníkem, načtěte jeho objekt Participant z participants vlastnost. Vzdálení účastníci jsou dostupní v meeting.participants.joined. Místní účastník je dostupný v meeting.localUser.

let joinedParticipants = meeting.participants.joined
guard let participant = joinedParticipants.first else {
	// No remote participants are currently joined.
	return
}

Chcete-li provádět akce s konkrétním účastníkem, načtěte jeho objekt Participant z participants vlastnost. Vzdálení účastníci jsou dostupní v meeting.participants.joined. Místní účastník je dostupný v meeting.self.

const joinedParticipants = meeting.participants.joined;
const participant = joinedParticipants.toArray()[0];
if (!participant) {
	// No remote participants are currently joined.
}

Nebo použijte useRealtimeKitSelector hook:

import { useRealtimeKitSelector } from '@cloudflare/realtimekit-react-native';

const joinedParticipants = useRealtimeKitSelector((m) => m.participants.joined);

Ztlumit zvuk

Ztlumte zvuk účastníků, když potřebujete potlačit hluk na pozadí, moderovat výuku nebo webinář, nebo zabránit rušení během relace. Tato akce vyžaduje Mute Audio (disable_participant_audio) povolené oprávnění hostitele v přednastavení lokálního účastníka.

Ztlumit účastníka

Chcete-li ztlumit zvuk konkrétního účastníka:

  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.

    const canMuteAudio =
    	meeting.self.permissions.canDisableParticipantAudio === true;
    if (!canMuteAudio) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAudio() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, disableAudio() vyvolá ClientError s kódem 1201.

    try {
    	await participant.disableAudio();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to mute other participants’ audio.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u cílového účastníka jeho audioEnabled se změní na false, a SDK vyvolá audioUpdate událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("audioUpdate", ({ audioEnabled, audioTrack }) => {
    	// audioEnabled is false
    	// Update UI for the participant
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on(
    	"audioUpdate",
    	(participant, { audioEnabled, audioTrack }) => {
    		if (participant.id === targetParticipantId) {
    			// audioEnabled is false
    			// Update UI for the participant
    		}
    	},
    );
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.

    const canMuteAudio =
    	meeting.self.permissions.canDisableParticipantAudio === true;
    if (!canMuteAudio) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAudio() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, disableAudio() vyvolá ClientError s kódem 1201.

    try {
    	await participant.disableAudio();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to mute other participants’ audio.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u cílového účastníka jeho audioEnabled se změní na false, a SDK vyvolá audioUpdate událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("audioUpdate", ({ audioEnabled, audioTrack }) => {
    	// audioEnabled is false
    	// Update UI for the participant
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on(
    	"audioUpdate",
    	(participant, { audioEnabled, audioTrack }) => {
    		if (participant.id === targetParticipantId) {
    			// audioEnabled is false
    			// Update UI for the participant
    		}
    	},
    );
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.

    const canMuteAudio =
    	meeting.self.permissions.canDisableParticipantAudio === true;
    if (!canMuteAudio) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAudio() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, disableAudio() vyvolá ClientError s kódem 1201.

    try {
    	await participant.disableAudio();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to mute other participants’ audio.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u cílového účastníka jeho audioEnabled se změní na false, a SDK vyvolá audioUpdate událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("audioUpdate", ({ audioEnabled, audioTrack }) => {
    	// audioEnabled is false
    	// Update UI for the participant
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on(
    	"audioUpdate",
    	(participant, { audioEnabled, audioTrack }) => {
    		if (participant.id === targetParticipantId) {
    			// audioEnabled is false
    			// Update UI for the participant
    		}
    	},
    );
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.
val canMuteAudio = meeting.localUser.permissions.host.canMuteAudio
if (!canMuteAudio) {
	// Disable the control in your UI.
}
  1. Zavolejte disableAudio() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, disableAudio() vrací HostError.
val error = participant.disableAudio()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje audioEnabled se změní na false.
meeting.addParticipantsEventListener(object : RtkParticipantsEventListener {
	override fun onAudioUpdate(participant: RtkRemoteParticipant, isEnabled: Boolean) {
		// audioEnabled is false
		// Update UI for the participant
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.
let canMuteAudio = meeting.localUser.permissions.host.canMuteAudio
if !canMuteAudio {
	// Disable the control in your UI.
}
  1. Zavolejte disableAudio() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, disableAudio() vrací HostError.
if let error = participant.disableAudio() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje audioEnabled se změní na false.
extension MeetingViewModel: RtkParticipantsEventListener {
	func onAudioUpdate(participant: RtkRemoteParticipant, isEnabled: Bool) {
		// audioEnabled is false
		// Update UI for the participant
	}
}

// Register the listener
meeting.addParticipantsEventListener(participantsEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.
const canDisableParticipantAudio = meeting.self.permissions.canDisableParticipantAudio;
if (!canDisableParticipantAudio) {
	// Disable the control in your UI.
}
  1. Zavolejte disableAudio() na cílovém účastníkovi.
participant
	.disableAudio()
	.catch((err) => {
		// Handle error - permission denied or other issue.
		console.log(err);
	});
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje audioEnabled se změní na false.
meeting.participants.joined.on('audioUpdate', (participant) => {
	// participant.audioEnabled is false
	// Update UI for the participant
});

Ztlumit všechny účastníky

Týká se všech účastníků, včetně lokálního účastníka. Chcete-li ztlumit zvuk u všech účastníků relace:

  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.

    const canMuteAudio =
    	meeting.self.permissions.canDisableParticipantAudio === true;
    if (!canMuteAudio) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAllAudio().

    Pokud lokální účastník nemá požadované oprávnění, disableAllAudio() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.disableAllAudio();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to mute other participants’ audio.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u každého účastníka jeho audioEnabled se změní na false, a SDK vyvolá audioUpdate událost. Místní účastník rovněž obdrží audioUpdate na meeting.self.

    Naslouchejte aktualizacím vzdáleného účastníka na joined mapa:

    meeting.participants.joined.on(
    	"audioUpdate",
    	(participant, { audioEnabled, audioTrack }) => {
    		// audioEnabled is false
    		// Update UI for the participant
    	},
    );

    Naslouchejte aktualizaci lokálního účastníka na meeting.self:

    meeting.self.on("audioUpdate", ({ audioEnabled, audioTrack }) => {
    	// audioEnabled is false
    	// Update UI for the local participant
    });
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.

    const canMuteAudio =
    	meeting.self.permissions.canDisableParticipantAudio === true;
    if (!canMuteAudio) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAllAudio().

    Pokud lokální účastník nemá požadované oprávnění, disableAllAudio() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.disableAllAudio();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to mute other participants’ audio.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u každého účastníka jeho audioEnabled se změní na false, a SDK vyvolá audioUpdate událost. Místní účastník rovněž obdrží audioUpdate na meeting.self.

    Naslouchejte aktualizacím vzdáleného účastníka na joined mapa:

    meeting.participants.joined.on(
    	"audioUpdate",
    	(participant, { audioEnabled, audioTrack }) => {
    		// audioEnabled is false
    		// Update UI for the participant
    	},
    );

    Naslouchejte aktualizaci lokálního účastníka na meeting.self:

    meeting.self.on("audioUpdate", ({ audioEnabled, audioTrack }) => {
    	// audioEnabled is false
    	// Update UI for the local participant
    });
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.

    const canMuteAudio =
    	meeting.self.permissions.canDisableParticipantAudio === true;
    if (!canMuteAudio) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAllAudio().

    Pokud lokální účastník nemá požadované oprávnění, disableAllAudio() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.disableAllAudio();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to mute other participants’ audio.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u každého účastníka jeho audioEnabled se změní na false, a SDK vyvolá audioUpdate událost. Místní účastník rovněž obdrží audioUpdate na meeting.self.

    Naslouchejte aktualizacím vzdáleného účastníka na joined mapa:

    meeting.participants.joined.on(
    	"audioUpdate",
    	(participant, { audioEnabled, audioTrack }) => {
    		// audioEnabled is false
    		// Update UI for the participant
    	},
    );

    Naslouchejte aktualizaci lokálního účastníka na meeting.self:

    meeting.self.on("audioUpdate", ({ audioEnabled, audioTrack }) => {
    	// audioEnabled is false
    	// Update UI for the local participant
    });
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.
val canMuteAudio = meeting.localUser.permissions.host.canMuteAudio
if (!canMuteAudio) {
	// Disable the control in your UI.
}
  1. Zavolejte disableAllAudio() na objektu účastníků. Pokud lokální účastník nemá potřebné oprávnění, disableAllAudio() vrací HostError.
val error = meeting.participants.disableAllAudio()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u každého účastníka aktualizuje audioEnabled se změní na false.
meeting.addParticipantsEventListener(object : RtkParticipantsEventListener {
	override fun onAudioUpdate(participant: RtkRemoteParticipant, isEnabled: Boolean) {
		// audioEnabled is false
		// Update UI for the participant
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.
let canMuteAudio = meeting.localUser.permissions.host.canMuteAudio
if !canMuteAudio {
	// Disable the control in your UI.
}
  1. Zavolejte disableAllAudio() na objektu účastníků. Pokud lokální účastník nemá potřebné oprávnění, disableAllAudio() vrací HostError.
if let error = meeting.participants.disableAllAudio() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u každého účastníka aktualizuje audioEnabled se změní na false.
extension MeetingViewModel: RtkParticipantsEventListener {
	func onAudioUpdate(participant: RtkRemoteParticipant, isEnabled: Bool) {
		// audioEnabled is false
		// Update UI for the participant
	}
}

// Register the listener
meeting.addParticipantsEventListener(participantsEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění ztlumit zvuk ostatním účastníkům.
const canDisableParticipantAudio = meeting.self.permissions.canDisableParticipantAudio;
if (!canDisableParticipantAudio) {
	// Disable the control in your UI.
}
  1. Zavolejte disableAllAudio() na objektu účastníků.
meeting.participants
	.disableAllAudio(true)
	.catch((err) => {
		// Handle error - permission denied or other issue.
		console.log(err);
	});
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u každého účastníka aktualizuje audioEnabled se změní na false.
meeting.participants.joined.on('audioUpdate', (participant) => {
	// participant.audioEnabled is false
	// Update UI for the participant
});

Vypnutí videa

Vypněte video účastníků, když potřebujete moderovat schůzku, vynutit dodržování soukromí nebo zabránit nežádoucímu videu během výuky nebo webináře. Tato akce vyžaduje Mute Video (disable_participant_video) povolené oprávnění hostitele v přednastavení lokálního účastníka.

Vypnutí videa účastníka

Vypnutí videa konkrétního účastníka:

  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.

    const canDisableVideo =
    	meeting.self.permissions.canDisableParticipantVideo === true;
    if (!canDisableVideo) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableVideo() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, disableVideo() vyvolá ClientError s kódem 1201.

    try {
    	await participant.disableVideo();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to disable other participants’ video.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u cílového účastníka jeho videoEnabled se změní na false, a SDK vyvolá videoUpdate událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("videoUpdate", ({ videoEnabled, videoTrack }) => {
    	// videoEnabled is false
    	// Update UI for the participant
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on(
    	"videoUpdate",
    	(participant, { videoEnabled, videoTrack }) => {
    		// videoEnabled is false
    		// Update UI for the participant
    	},
    );
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.

    const canDisableVideo =
    	meeting.self.permissions.canDisableParticipantVideo === true;
    if (!canDisableVideo) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableVideo() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, disableVideo() vyvolá ClientError s kódem 1201.

    try {
    	await participant.disableVideo();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to disable other participants’ video.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u cílového účastníka jeho videoEnabled se změní na false, a SDK vyvolá videoUpdate událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("videoUpdate", ({ videoEnabled, videoTrack }) => {
    	// videoEnabled is false
    	// Update UI for the participant
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on(
    	"videoUpdate",
    	(participant, { videoEnabled, videoTrack }) => {
    		// videoEnabled is false
    		// Update UI for the participant
    	},
    );
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.

    const canDisableVideo =
    	meeting.self.permissions.canDisableParticipantVideo === true;
    if (!canDisableVideo) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableVideo() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, disableVideo() vyvolá ClientError s kódem 1201.

    try {
    	await participant.disableVideo();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to disable other participants’ video.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u cílového účastníka jeho videoEnabled se změní na false, a SDK vyvolá videoUpdate událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("videoUpdate", ({ videoEnabled, videoTrack }) => {
    	// videoEnabled is false
    	// Update UI for the participant
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on(
    	"videoUpdate",
    	(participant, { videoEnabled, videoTrack }) => {
    		// videoEnabled is false
    		// Update UI for the participant
    	},
    );
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.
val canMuteVideo = meeting.localUser.permissions.host.canMuteVideo
if (!canMuteVideo) {
	// Disable the control in your UI.
}
  1. Zavolejte disableVideo() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, disableVideo() vrací HostError.
val error = participant.disableVideo()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje videoEnabled se změní na false.
meeting.addParticipantsEventListener(object : RtkParticipantsEventListener {
	override fun onVideoUpdate(participant: RtkRemoteParticipant, isEnabled: Boolean) {
		// videoEnabled is false
		// Update UI for the participant
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.
let canMuteVideo = meeting.localUser.permissions.host.canMuteVideo
if !canMuteVideo {
	// Disable the control in your UI.
}
  1. Zavolejte disableVideo() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, disableVideo() vrací HostError.
if let error = participant.disableVideo() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje videoEnabled se změní na false.
extension MeetingViewModel: RtkParticipantsEventListener {
	func onVideoUpdate(participant: RtkRemoteParticipant, isEnabled: Bool) {
		// videoEnabled is false
		// Update UI for the participant
	}
}

// Register the listener
meeting.addParticipantsEventListener(participantsEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.
const canDisableParticipantVideo = meeting.self.permissions.canDisableParticipantVideo;
if (!canDisableParticipantVideo) {
	// Disable the control in your UI.
}
  1. Zavolejte disableVideo() na cílovém účastníkovi.
participant
	.disableVideo()
	.catch((err) => {
		// Handle error - permission denied or other issue.
		console.log(err);
	});
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje videoEnabled se změní na false.
meeting.participants.joined.on('videoUpdate', (participant) => {
	// participant.videoEnabled is false
	// Update UI for the participant
});

Vypnutí videa všech účastníků

Týká se všech účastníků, včetně lokálního účastníka. Chcete-li vypnout video u všech účastníků relace:

  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.

    const canDisableVideo =
    	meeting.self.permissions.canDisableParticipantVideo === true;
    if (!canDisableVideo) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAllVideo().

    Pokud lokální účastník nemá požadované oprávnění, disableAllVideo() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.disableAllVideo();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to disable other participants’ video.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u každého účastníka jeho videoEnabled se změní na false, a SDK vyvolá videoUpdate událost. Místní účastník rovněž obdrží videoUpdate na meeting.self.

    Naslouchejte aktualizacím vzdáleného účastníka na joined mapa:

    meeting.participants.joined.on(
    	"videoUpdate",
    	(participant, { videoEnabled, videoTrack }) => {
    		// videoEnabled is false
    		// Update UI for the participant
    	},
    );

    Naslouchejte aktualizaci lokálního účastníka na meeting.self:

    meeting.self.on("videoUpdate", ({ videoEnabled, videoTrack }) => {
    	// videoEnabled is false
    	// Update UI for the local participant
    });
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.

    const canDisableVideo =
    	meeting.self.permissions.canDisableParticipantVideo === true;
    if (!canDisableVideo) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAllVideo().

    Pokud lokální účastník nemá požadované oprávnění, disableAllVideo() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.disableAllVideo();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to disable other participants’ video.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u každého účastníka jeho videoEnabled se změní na false, a SDK vyvolá videoUpdate událost. Místní účastník rovněž obdrží videoUpdate na meeting.self.

    Naslouchejte aktualizacím vzdáleného účastníka na joined mapa:

    meeting.participants.joined.on(
    	"videoUpdate",
    	(participant, { videoEnabled, videoTrack }) => {
    		// videoEnabled is false
    		// Update UI for the participant
    	},
    );

    Naslouchejte aktualizaci lokálního účastníka na meeting.self:

    meeting.self.on("videoUpdate", ({ videoEnabled, videoTrack }) => {
    	// videoEnabled is false
    	// Update UI for the local participant
    });
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.

    const canDisableVideo =
    	meeting.self.permissions.canDisableParticipantVideo === true;
    if (!canDisableVideo) {
    	// Disable the control in your UI.
    }
  2. Zavolejte disableAllVideo().

    Pokud lokální účastník nemá požadované oprávnění, disableAllVideo() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.disableAllVideo();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to disable other participants’ video.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání se u každého účastníka jeho videoEnabled se změní na false, a SDK vyvolá videoUpdate událost. Místní účastník rovněž obdrží videoUpdate na meeting.self.

    Naslouchejte aktualizacím vzdáleného účastníka na joined mapa:

    meeting.participants.joined.on(
    	"videoUpdate",
    	(participant, { videoEnabled, videoTrack }) => {
    		// videoEnabled is false
    		// Update UI for the participant
    	},
    );

    Naslouchejte aktualizaci lokálního účastníka na meeting.self:

    meeting.self.on("videoUpdate", ({ videoEnabled, videoTrack }) => {
    	// videoEnabled is false
    	// Update UI for the local participant
    });
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.
val canMuteVideo = meeting.localUser.permissions.host.canMuteVideo
if (!canMuteVideo) {
	// Disable the control in your UI.
}
  1. Zavolejte disableAllVideo() na objektu účastníků. Pokud lokální účastník nemá potřebné oprávnění, disableAllVideo() vrací HostError.
val error = meeting.participants.disableAllVideo()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u každého účastníka aktualizuje videoEnabled se změní na false.
meeting.addParticipantsEventListener(object : RtkParticipantsEventListener {
	override fun onVideoUpdate(participant: RtkRemoteParticipant, isEnabled: Boolean) {
		// videoEnabled is false
		// Update UI for the participant
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.
let canMuteVideo = meeting.localUser.permissions.host.canMuteVideo
if !canMuteVideo {
	// Disable the control in your UI.
}
  1. Zavolejte disableAllVideo() na objektu účastníků. Pokud lokální účastník nemá potřebné oprávnění, disableAllVideo() vrací HostError.
if let error = meeting.participants.disableAllVideo() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u každého účastníka aktualizuje videoEnabled se změní na false.
extension MeetingViewModel: RtkParticipantsEventListener {
	func onVideoUpdate(participant: RtkRemoteParticipant, isEnabled: Bool) {
		// videoEnabled is false
		// Update UI for the participant
	}
}

// Register the listener
meeting.addParticipantsEventListener(participantsEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění vypnout video ostatním účastníkům.
const canDisableParticipantVideo = meeting.self.permissions.canDisableParticipantVideo;
if (!canDisableParticipantVideo) {
	// Disable the control in your UI.
}
  1. Zavolejte disableAllVideo() na objektu účastníků.
meeting.participants
	.disableAllVideo(true)
	.catch((err) => {
		// Handle error - permission denied or other issue.
		console.log(err);
	});
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u každého účastníka aktualizuje videoEnabled se změní na false.
meeting.participants.joined.on('videoUpdate', (participant) => {
	// participant.videoEnabled is false
	// Update UI for the participant
});

Připnutí účastníků

Připnutím účastníka jej zvýrazníte, například jako prezentujícího na webináři nebo učitele ve třídě. Jde o akci platnou pro celou relaci. Všichni účastníci uvidí připnutého účastníka jako hlavní zaměření. Tato akce vyžaduje Připnout účastníka (pin_participant) povolené oprávnění hostitele v přednastavení lokálního účastníka.

Připnutí účastníka

Chcete-li připnout účastníka v relaci:

  1. Zkontrolujte, zda má místní účastník oprávnění připínat účastníky.

    const canPinParticipant = meeting.self.permissions.pinParticipant === true;
    if (!canPinParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte pin() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, pin() vyvolá ClientError s kódem 1201.

    try {
    	await participant.pin();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to pin participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Cílového účastníka isPinned nabude hodnoty true.
    • Účastník je přidán do meeting.participants.pinned.
    • SDK vysílá pinned událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("pinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is true
    	// Update your UI.
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on("pinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is true
    	// Update your UI.
    });

    Pokud již dříve existoval připnutý účastník, SDK vyvolá unpinned událost pro daného účastníka.

  4. Na straně cílového připnutého účastníka meeting.self.isPinned se změní na true a meeting.self vysílá pinned:

    meeting.self.on("pinned", (selfParticipant) => {
    	// Update the local UI to indicate the participant is pinned.
    });
  1. Zkontrolujte, zda má místní účastník oprávnění připínat účastníky.

    const canPinParticipant = meeting.self.permissions.pinParticipant === true;
    if (!canPinParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte pin() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, pin() vyvolá ClientError s kódem 1201.

    try {
    	await participant.pin();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to pin participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Cílového účastníka isPinned nabude hodnoty true.
    • Účastník je přidán do meeting.participants.pinned.
    • SDK vysílá pinned událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("pinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is true
    	// Update your UI.
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on("pinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is true
    	// Update your UI.
    });

    Pokud již dříve existoval připnutý účastník, SDK vyvolá unpinned událost pro daného účastníka.

  4. Na straně cílového připnutého účastníka meeting.self.isPinned se změní na true a meeting.self vysílá pinned:

    meeting.self.on("pinned", (selfParticipant) => {
    	// Update the local UI to indicate the participant is pinned.
    });
  1. Zkontrolujte, zda má místní účastník oprávnění připínat účastníky.

    const canPinParticipant = meeting.self.permissions.pinParticipant === true;
    if (!canPinParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte pin() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, pin() vyvolá ClientError s kódem 1201.

    try {
    	await participant.pin();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to pin participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Cílového účastníka isPinned nabude hodnoty true.
    • Účastník je přidán do meeting.participants.pinned.
    • SDK vysílá pinned událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("pinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is true
    	// Update your UI.
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on("pinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is true
    	// Update your UI.
    });

    Pokud již dříve existoval připnutý účastník, SDK vyvolá unpinned událost pro daného účastníka.

  4. Na straně cílového připnutého účastníka meeting.self.isPinned se změní na true a meeting.self vysílá pinned:

    meeting.self.on("pinned", (selfParticipant) => {
    	// Update the local UI to indicate the participant is pinned.
    });
  1. Zkontrolujte, zda má místní účastník oprávnění připínat účastníky.
val canPinParticipant = meeting.localUser.permissions.host.canPinParticipant
if (!canPinParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte pin() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, pin() vrací HostError.
val error = participant.pin()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje isPinned se změní na true a účastník je dostupný v meeting.participants.pinned.
meeting.addParticipantsEventListener(object : RtkParticipantsEventListener {
	override fun onParticipantPinned(participant: RtkRemoteParticipant) {
		// participant.isPinned is true
		// Update your UI.
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění připínat účastníky.
let canPinParticipant = meeting.localUser.permissions.host.canPinParticipant
if !canPinParticipant {
	// Disable the control in your UI.
}
  1. Zavolejte pin() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, pin() vrací HostError.
if let error = participant.pin() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje isPinned se změní na true a účastník je dostupný v meeting.participants.pinned.
extension MeetingViewModel: RtkParticipantsEventListener {
	func onParticipantPinned(participant: RtkRemoteParticipant) {
		// participant.isPinned is true
		// Update your UI.
	}
}

// Register the listener
meeting.addParticipantsEventListener(participantsEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění připínat účastníky.
const canPinParticipant = meeting.self.permissions.pinParticipant;
if (!canPinParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte pin() na cílovém účastníkovi.
participant.pin();
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje isPinned se změní na true a účastník je dostupný v meeting.participants.pinned.
meeting.participants.pinned.on('participantPinned', (participant) => {
	// participant.isPinned is true
	// Update your UI.
});

Odepněte účastníka

Odepněte účastníka, když potřebujete zrušit zvýraznění a vrátit relaci do standardního zobrazení mřížky nebo zobrazení aktivního mluvčího. Odepnutí připnutého účastníka v relaci:

  1. Zkontrolujte, zda má místní účastník oprávnění odepínat účastníky.

    const canUnpinParticipant = meeting.self.permissions.pinParticipant === true;
    if (!canUnpinParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte unpin() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, unpin() vyvolá ClientError s kódem 1201.

    try {
    	await participant.unpin();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to unpin participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Cílového účastníka isPinned se změní na false.
    • Účastník je odebrán z meeting.participants.pinned.
    • SDK vysílá unpinned událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("unpinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is false
    	// Update your UI.
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on("unpinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is false
    	// Update your UI.
    });
  4. Na straně cílového odepnutého účastníka meeting.self.isPinned se změní na false a meeting.self vysílá unpinned:

    meeting.self.on("unpinned", (selfParticipant) => {
    	// Update the local UI to indicate the participant is no longer pinned.
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odepínat účastníky.

    const canUnpinParticipant = meeting.self.permissions.pinParticipant === true;
    if (!canUnpinParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte unpin() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, unpin() vyvolá ClientError s kódem 1201.

    try {
    	await participant.unpin();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to unpin participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Cílového účastníka isPinned se změní na false.
    • Účastník je odebrán z meeting.participants.pinned.
    • SDK vysílá unpinned událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("unpinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is false
    	// Update your UI.
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on("unpinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is false
    	// Update your UI.
    });
  4. Na straně cílového odepnutého účastníka meeting.self.isPinned se změní na false a meeting.self vysílá unpinned:

    meeting.self.on("unpinned", (selfParticipant) => {
    	// Update the local UI to indicate the participant is no longer pinned.
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odepínat účastníky.

    const canUnpinParticipant = meeting.self.permissions.pinParticipant === true;
    if (!canUnpinParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte unpin() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, unpin() vyvolá ClientError s kódem 1201.

    try {
    	await participant.unpin();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to unpin participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Cílového účastníka isPinned se změní na false.
    • Účastník je odebrán z meeting.participants.pinned.
    • SDK vysílá unpinned událost.

    Možnost A: Naslouchejte na objektu účastníka

    participant.on("unpinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is false
    	// Update your UI.
    });

    Možnost B: Naslouchejte na joined mapa

    meeting.participants.joined.on("unpinned", (updatedParticipant) => {
    	// updatedParticipant.isPinned is false
    	// Update your UI.
    });
  4. Na straně cílového odepnutého účastníka meeting.self.isPinned se změní na false a meeting.self vysílá unpinned:

    meeting.self.on("unpinned", (selfParticipant) => {
    	// Update the local UI to indicate the participant is no longer pinned.
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odepínat účastníky.
val canPinParticipant = meeting.localUser.permissions.host.canPinParticipant
if (!canPinParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte unpin() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, unpin() vrací HostError.
val error = participant.unpin()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje isPinned se změní na false.
meeting.addParticipantsEventListener(object : RtkParticipantsEventListener {
	override fun onParticipantUnpinned(participant: RtkRemoteParticipant) {
		// participant.isPinned is false
		// Update your UI.
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění odepínat účastníky.
let canPinParticipant = meeting.localUser.permissions.host.canPinParticipant
if !canPinParticipant {
	// Disable the control in your UI.
}
  1. Zavolejte unpin() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, unpin() vrací HostError.
if let error = participant.unpin() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje isPinned se změní na false.
extension MeetingViewModel: RtkParticipantsEventListener {
	func onParticipantUnpinned(participant: RtkRemoteParticipant) {
		// participant.isPinned is false
		// Update your UI.
	}
}

// Register the listener
meeting.addParticipantsEventListener(participantsEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění odepínat účastníky.
const canPinParticipant = meeting.self.permissions.pinParticipant;
if (!canPinParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte unpin() na cílovém účastníkovi.
participant.unpin();
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání se u cílového účastníka aktualizuje isPinned se změní na false.
meeting.participants.pinned.on('unpinned', (participant) => {
	// participant.isPinned is false
	// Update your UI.
});

Odebrání účastníků

Odeberte účastníky z relace, pokud potřebujete moderovat rušivé chování nebo vynutit pravidla relace. Tato akce vyžaduje Vyhodit účastníky (kick_participant) povolené oprávnění hostitele v přednastavení lokálního účastníka.

Odeberte účastníka

Chcete-li odebrat konkrétního účastníka z relace:

  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.

    const canKickParticipant = meeting.self.permissions.kickParticipant === true;
    if (!canKickParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte kick() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, kick() vyvolá ClientError s kódem 1201.

    try {
    	await participant.kick();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to remove participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Vyloučený účastník je odebrán z meeting.participants.joined.
    • Účastník je odebrán z ostatních map účastníků, ve kterých se nacházel (například meeting.participants.pinned).
    • SDK vysílá participantLeft na meeting.participants.joined.
    meeting.participants.joined.on("participantLeft", (participant) => {
    	// Remove the participant tile from the UI.
    });

    Ostatní účastníci relace zaznamenají odchod účastníka prostřednictvím participantLeft.

  4. Na straně odebraného účastníka se relace odpojí a meeting.self vysílá roomLeft událost se stavem nastaveným na kicked.

    meeting.self.on("roomLeft", ({ state }) => {
    	if (state === "kicked") {
    		// Show a message and navigate the user out of the meeting UI.
    	}
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.

    const canKickParticipant = meeting.self.permissions.kickParticipant === true;
    if (!canKickParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte kick() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, kick() vyvolá ClientError s kódem 1201.

    try {
    	await participant.kick();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to remove participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Vyloučený účastník je odebrán z meeting.participants.joined.
    • Účastník je odebrán z ostatních map účastníků, ve kterých se nacházel (například meeting.participants.pinned).
    • SDK vysílá participantLeft na meeting.participants.joined.
    meeting.participants.joined.on("participantLeft", (participant) => {
    	// Remove the participant tile from the UI.
    });

    Ostatní účastníci relace zaznamenají odchod účastníka prostřednictvím participantLeft.

  4. Na straně odebraného účastníka se relace odpojí a meeting.self vysílá roomLeft událost se stavem nastaveným na kicked.

    meeting.self.on("roomLeft", ({ state }) => {
    	if (state === "kicked") {
    		// Show a message and navigate the user out of the meeting UI.
    	}
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.

    const canKickParticipant = meeting.self.permissions.kickParticipant === true;
    if (!canKickParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte kick() na cílovém účastníkovi.

    Pokud lokální účastník nemá požadované oprávnění, kick() vyvolá ClientError s kódem 1201.

    try {
    	await participant.kick();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to remove participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání:

    • Vyloučený účastník je odebrán z meeting.participants.joined.
    • Účastník je odebrán z ostatních map účastníků, ve kterých se nacházel (například meeting.participants.pinned).
    • SDK vysílá participantLeft na meeting.participants.joined.
    meeting.participants.joined.on("participantLeft", (participant) => {
    	// Remove the participant tile from the UI.
    });

    Ostatní účastníci relace zaznamenají odchod účastníka prostřednictvím participantLeft.

  4. Na straně odebraného účastníka se relace odpojí a meeting.self vysílá roomLeft událost se stavem nastaveným na kicked.

    meeting.self.on("roomLeft", ({ state }) => {
    	if (state === "kicked") {
    		// Show a message and navigate the user out of the meeting UI.
    	}
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.
val canKickParticipant = meeting.localUser.permissions.host.canKickParticipant
if (!canKickParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte kick() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, kick() vrací HostError.
val error = participant.kick()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání je vyloučený účastník odebrán z meeting.participants.joined.
meeting.addParticipantsEventListener(object : RtkParticipantsEventListener {
	override fun onParticipantLeave(participant: RtkRemoteParticipant) {
		// Remove the participant tile from the UI.
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.
let canKickParticipant = meeting.localUser.permissions.host.canKickParticipant
if !canKickParticipant {
	// Disable the control in your UI.
}
  1. Zavolejte kick() na cílovém účastníkovi. Pokud lokální účastník nemá potřebné oprávnění, kick() vrací HostError.
if let error = participant.kick() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání je vyloučený účastník odebrán z meeting.participants.joined.
extension MeetingViewModel: RtkParticipantsEventListener {
	func onParticipantLeave(participant: RtkRemoteParticipant) {
		// Remove the participant tile from the UI.
	}
}

// Register the listener
meeting.addParticipantsEventListener(participantsEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.
const canKickParticipant = meeting.self.permissions.kickParticipant;
if (!canKickParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte kick() na cílovém účastníkovi.
participant
	.kick()
	.catch((err) => {
		// Handle error - permission denied or other issue.
		console.log(err);
	});
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání je vyloučený účastník odebrán z meeting.participants.joined.
meeting.participants.joined.on('participantLeft', (participant) => {
	// Remove the participant tile from the UI.
});

Odebrání všech účastníků

Tím dojde k odebrání všech účastníků z relace, včetně lokálního účastníka. Relace tak skončí pro všechny.

Úplný postup ukončení relace najdete v Ukončení relace.

Chcete-li odebrat všechny účastníky z relace:

  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.

    const canKickParticipant = meeting.self.permissions.kickParticipant === true;
    if (!canKickParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte kickAll().

    Pokud lokální účastník nemá požadované oprávnění, kickAll() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.kickAll();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to remove participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání všichni účastníci opustí relaci. Na každém klientovi meeting.self vysílá roomLeft se stavem nastaveným na ended.

    meeting.self.on("roomLeft", ({ state }) => {
    	if (state === "ended") {
    		// Show a message and navigate the user out of the meeting UI.
    	}
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.

    const canKickParticipant = meeting.self.permissions.kickParticipant === true;
    if (!canKickParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte kickAll().

    Pokud lokální účastník nemá požadované oprávnění, kickAll() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.kickAll();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to remove participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání všichni účastníci opustí relaci. Na každém klientovi meeting.self vysílá roomLeft se stavem nastaveným na ended.

    meeting.self.on("roomLeft", ({ state }) => {
    	if (state === "ended") {
    		// Show a message and navigate the user out of the meeting UI.
    	}
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.

    const canKickParticipant = meeting.self.permissions.kickParticipant === true;
    if (!canKickParticipant) {
    	// Disable the control in your UI.
    }
  2. Zavolejte kickAll().

    Pokud lokální účastník nemá požadované oprávnění, kickAll() vyvolá ClientError s kódem 1201.

    try {
    	await meeting.participants.kickAll();
    } catch (err: any) {
    	if (err?.code === 1201) {
    		// The local participant does not have permission to remove participants.
    		return;
    	}
    	throw err;
    }
  3. Výsledek zpracujte nasloucháním aktualizacím.

    Po úspěšném volání všichni účastníci opustí relaci. Na každém klientovi meeting.self vysílá roomLeft se stavem nastaveným na ended.

    meeting.self.on("roomLeft", ({ state }) => {
    	if (state === "ended") {
    		// Show a message and navigate the user out of the meeting UI.
    	}
    });
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.
val canKickParticipant = meeting.localUser.permissions.host.canKickParticipant
if (!canKickParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte kickAll() na objektu účastníků. Pokud lokální účastník nemá potřebné oprávnění, kickAll() vrací HostError.
val error = meeting.participants.kickAll()
if (error != null) {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání všichni účastníci opustí relaci.
meeting.addMeetingRoomEventListener(object : RtkMeetingRoomEventListener {
	override fun onMeetingEnded() {
		// Show a message and navigate the user out of the meeting UI.
	}
})
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.
let canKickParticipant = meeting.localUser.permissions.host.canKickParticipant
if !canKickParticipant {
	// Disable the control in your UI.
}
  1. Zavolejte kickAll() na objektu účastníků. Pokud lokální účastník nemá potřebné oprávnění, kickAll() vrací HostError.
if let error = meeting.participants.kickAll() {
	// Handle error - permission denied.
}
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání všichni účastníci opustí relaci.
extension MeetingViewModel: RtkMeetingRoomEventListener {
	func onMeetingEnded() {
		// Show a message and navigate the user out of the meeting UI.
	}
}

// Register the listener
meeting.addMeetingRoomEventListener(meetingRoomEventListener: self)
  1. Zkontrolujte, zda má místní účastník oprávnění odebírat účastníky.
const canKickParticipant = meeting.self.permissions.kickParticipant;
if (!canKickParticipant) {
	// Disable the control in your UI.
}
  1. Zavolejte kickAll() na objektu účastníků.
meeting.participants
	.kickAll()
	.catch((err) => {
		// Handle error - permission denied or other issue.
		console.log(err);
	});
  1. Výsledek zpracujte nasloucháním aktualizacím. Po úspěšném dokončení volání všichni účastníci opustí relaci.
meeting.self.on('roomLeft', ({ state }) => {
	if (state === 'kicked') {
		// Show a message and navigate the user out of the meeting UI.
	}
});

Další kroky