iOS

# 第三方管理

本文将介绍通话过程中第三方管理的功能,访客无邀请和转接的接口,但是能收到第三方加入离开的事件。

# 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];
    }
}