# 第三方管理
本文将介绍通话过程中第三方管理的功能,访客无邀请和转接的接口,但是能收到第三方加入离开的事件。
# 1. 第三方成员离开或加入
新成员加入通话或成员离开通话,会通过 JRTCGuestCallback (opens new window) 中的 onMemberJoin (opens new window) 和 onMemberLeave (opens new window) 接口上报。
/**
* 通话中有新成员加入回调
*
* 当第三方成员加入时,已在通话中的所有成员会收到此回调,而新加入的成员不会收到此回调。
* @param participant 新加入的成员对象
*/
- (void)onMemberJoin:(JRTCRoomParticipant *)participant;
/**
* 通话中有成员离开回调
*
* 通话中有成员离开通话时,剩余的成员会收到此回调,而离开的成员不会收到此回调。
* @param participant 离开的成员对象
*/
- (void)onMemberLeave:(JRTCRoomParticipant *)participant;
示例代码:
// 通话中有新成员加入
- (void)onMemberJoin:(JRTCRoomParticipant *)participant {
// 请求成员视频流大小
[_guest requestVideo:participant videoSize:videoSize];
// 渲染成员视图画面
[_mediaDevice startVideo:participant.streamId renderType:JRTCMediaDeviceRenderFullScreen);
// ...
}
// 通话中有成员离开
- (void)onMemberLeave:(JRTCRoomParticipant *)participant {
// 停止成员画面渲染
if ([participant.streamId isEqualToString:canvas.streamId]) {
[_mediaDevice stopVideo:canvas];
}
}
# 2. 邀请第三方访客
座席端调用接口邀请第三方访客时,访客端会收到 onCallStateChanged (opens new window) 回调。
访客端收到该回调后,可以调用 JRTCGuest.term (opens new window) 拒接或调用 JRTCGuest.answer (opens new window) 接听。
示例代码:
- (void)onCallStateChanged:(AgentCallStateChangeType)type incomingType:(CallIncomingType)incomingType inviter:(JRTCInviter *)inviter reason:(CallTermReason)reason {
if (incomingType == AgentCallStateChangeTypeIncoming) {
// 收到邀请
// 拒接
[_guest term];
// 接听
[_guest answer];
}
}