remonConference.create( "방이름", config: config) {
}.on( "onRoomCreated" ) {
// 마스터 유저가 접속된 이후에 호출(실제 송출 시작)
// TODO: 실제 유저 정보는 각 서비스에서 관리하므로, 서비스에서 채널과 실제 유저 매핑 작업 진행
// tag 객체에 holder 형태로 객체를 지정해 사용할 수 있습니다.
// 예제에서는 뷰 할당을 위해 단순히 view의 index를 저장합니다.
availableViews?[0] = true
Log.d( TAG, "Joined new user" )
// 그룹통화에 새로운 참여자가 입장했을 때 호출됩니다.
// 새로운 참여자의 RemonParticipant 객체가 전달됩니다.
// 뷰 리스트에서 비어있는 뷰를 얻어와 설정합니다.
if let index = self?.getAvailableView() {
participant.localView = nil
participant.remoteView = self?.viewArray[index]
}.on( "onUserStreamConnected" ) {
// participant.id 와 participant.tag 를 참조해 어떤 사용자가 퇴장했는지 확인후 퇴장 처리를 합니다.
if let index = participant.tag as? Int {
self?.availableViews?[index] = false
// 비어있는 뷰 검색 함수 : 각 서비스에 맞게 구성합니다.
func getAvailableView() ->Int {
if let views = self.availableViews {
for i in 0 ... views.count {
self.availableViews?[i] = true