Android&iOS&Windows&Mac
본 문서는 TRTC 방 퇴장 방법과 어떤 경우에 사용자가 강제 퇴장 당할 수 있는지 설명합니다.
호출 가이드
1단계: 필수 단계 수행
2단계: 현재 방에서 퇴장
exitRoom API를 호출하여 현재 방을 나가면 SDK는 onExitRoom(int reason) 콜백 이벤트를 통해 방 퇴장 이유를 알려줍니다.
// 현재 방 퇴장mCloud.exitRoom();
self.trtcCloud = [TRTCCloud sharedInstance];// 현재 방 퇴장[self.trtcCloud exitRoom];
trtc_cloud_ = getTRTCShareInstance();// 현재 방 퇴장trtc_cloud_->exitRoom();
exitRoom API가 호출된 후 SDK는 두 가지 주요 작업을 완료해야 하는 방 퇴장 프로세스에 들어갑니다.
핵심 과제1: 현재 사용자 퇴장 알림
방의 다른 사용자에게 다가오는 방 퇴장을 알리면 현재 사용자로부터 onRemoteUserLeaveRoom 콜백을 받게 됩니다. 그렇지 않으면 다른 사용자가 현재 사용자의 비디오 이미지가 ‘정지’된 것으로 간주할 수 있습니다.
핵심 과제2: 디바이스 권한 철회
현재 사용자가 방을 나가기 전에 오디오/비디오 스트림을 게시하는 경우 사용자는 방을 나가는 동안 카메라와 마이크를 끄고 장치 권한을 해제해야 합니다.
따라서 onExitRoom 콜백을 수신한 후 TRTCCloud 인스턴스를 해제하는 것이 좋습니다.
3단계: 강제로 현재 방 퇴장
onExitRoom(int reason) 콜백은 활성 방 퇴장 외에 다른 두 가지 경우에도 수신됩니다.
사례1: 사용자가 방에서 퇴장 당한 경우RemoveUser | RemoveUserByStrRoomId를 사용할 수 있습니다. 사용자를 TRTC 방에서 퇴장시키는 API입니다. 퇴장 당한 사용자는 onExitRoom(1) 콜백을 받게 됩니다.
사례2: 현재 방이 해산됨DismissRoom | DismissRoomByStrRoomId API를 호출하여 TRTC 방을 해산할 수 있습니다. 방이 해산되면 방에 있는 모든 사용자가 onExitRoom(2) 콜백을 받습니다.
// 방 퇴장 이유를 얻기 위해 onExitRoom 콜백 수신@Overridepublic void onExitRoom(int reason) {if (reason == 0) {Log.d(TAG, "Exit current room by calling the 'exitRoom' api of sdk ...");} else if (reason == 1) {Log.d(TAG, "Kicked out of the current room by server through the restful api...");} else if (reason == 2) {Log.d(TAG, "Current room is dissolved by server through the restful api...");}}
// 방 퇴장 이유를 얻기 위해 onExitRoom 콜백 수신- (void)onExitRoom:(NSInteger)reason {if (reason == 0) {NSLog(@"Exit current room by calling the 'exitRoom' api of sdk ...");} else if (reason == 1) {NSLog(@"Kicked out of the current room by server through the restful api...");} else if (reason == 2) {NSLog(@"Current room is dissolved by server through the restful api...");}}
// 방 퇴장 이유를 얻기 위해 onExitRoom 콜백 수신void onExitRoom(int reason) {if (reason == 0) {printf("Exit current room by calling the 'exitRoom' api of sdk ...");} else if (reason == 1) {printf("Kicked out of the current room by server through the restful api...");} else if (reason == 2) {printf("Current room is dissolved by server through the restful api...");}}