iOS API
iOS 버전의 카카오 i 커넥트 라이브 SDK 2.0는 SDK 주요 메서드와 클래스별로 API를 구분하여 제공합니다. 각 API에 대한 자세한 내용은 API 레퍼런스 문서를 참고하시기 바랍니다.
SDK 주요 메서드
iOS 버전의 카카오 i 커넥트 라이브 SDK 2.0에서 제공하는 주요 메서드는 다음과 같습니다.
표SDK 주요 메서드 목록구분 | 메서드 | 설명 |
---|---|---|
주요 메서드 | signIn()_커넥트 라이브 내부 인증 | SDK의 내부 인증 방식으로 인증을 수행하며, 인증 처리 후 결과는 Callback 형태로 전달 |
signIn()_서비스 자체 인증 | 서비스 자체의 인증 방식으로 인증을 수행하며, 인증 처리 후 결과는 Callback 형태로 전달 | |
signOut() | Connect Live 인증을 해제하고 인증 관련 리소스 정리 | |
createRoom() | Room(채팅방) 클래스 생성 | |
createLocalMedia() | LocalMedia 클래스 생성 | |
createScreenShare() | 화면공유 객체 생성 | |
setAudioSessionConfiguration() | 앱의 Audio Session 설정 | |
setAudioSessionWithCurrentCategory() | 오디오 세션을 현재 설정된 카테고리로 재설정 |
Config
나 자신의 미디어인 Local Media(로컬 미디어) 설정과 오디오/비디오 리시버(Receiver)의 개수를 설정합니다. 리시버의 개수는 동시 구독이 가능한 스트림 수를 의미하며, 실제 필요한 수만큼만 생성하는 것을 권장합니다.
오디오 리시버 수는 정해져 있으며, 비디오 리시버의 수는 각 서비스의 상황에 맞춰 설정할 수 있습니다. 구독 요청 시 최대 리시버 수만큼 자동으로 리시버가 증가하며, 최대 리시버 이상의 구독을 요청할 경우 오류를 리턴합니다. 이 경우 기존 다른 스트림의 구독을 해제한 후 구독을 수행해야 리시버를 할당받을 수 있습니다.
구분 | 항목 | 설명 |
---|---|---|
Config | mediaOptions | Local Media(로컬 미디어) 생성을 위한 옵션 |
videoReceiverInitialCount | 초기 생성할 리시버의 개수를 설정 | |
videoReceiverMaximumCount | 최대 영상 리시버의 개수 |
Local Medio Options
비디오 소스 선택, 오디오 타입 선택 등 로컬 미디어의 옵션을 설정할 수 있습니다.
표Local Media Options 전체 목록구분 | 항목 | 설명 |
---|---|---|
LocalMediaOptions | source | 로컬 미디어의 비디오 소스를 선택 |
hasAudio | 로컬 미디어가 오디오 스트림의 포함 여부를 설정 | |
hasVideo | 로컬 미디어가 비디오 스트림의 포함 여부를 설정 | |
audio | 로컬 미디어 시작 시 오디오의 활성화 여부를 선택 | |
video | 로컬 미디어 시작 시 비디오의 활성화 여부를 선택 | |
videoExtraValue | 비디오 스트림 생성 시 비디오 스트림의 extraValue에 할당할 문자열 | |
audioExtraValue | 오디오 스트림 생성 시 오디오 스트림의 extraValue에 할당할 문자열 | |
rotationType | 카메라가 회전하는 방식을 선택 | |
position | 비디오 스트리밍 시 사용할 카메라 위치를 선택 | |
isMirror | 카메라 영상의 좌우 반전 여부를 설정 | |
audioType | 앱에서 사용하는 오디오 타입을 선택 | |
autoGain | 앱에서 마이크 입력의 자동 레벨 조정 기능의 사용 여부를 선택 | |
Room
Room 클래스는 카카오 i 커넥트 라이브 SDK의 주요 클래스 중 하나입니다. 카카오 i 커넥트 라이브에서 Room은 서비스에 따라 회의실, 채팅방 등 스트리밍 서비스를 사용하는 공간을 의미합니다. Room 클래스는 Property, Method, RoomDelegate로 구성됩니다.
표Room 클래스 전체 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
Room | Property | status | Room의 연결 상태를 반환 |
localParticipant | 로컬 미디어를 송출하는 로컬 참여자 객체 정보 | ||
remoteParticipants | 리모트 미디어를 송출하는 로컬 리모트 참여자 객체들의 Dictionary | ||
Method | connect() | 특정 ID의 Room에 연결하고 스트림의 송수신을 위한 모든 절차 시작 | |
disconnect() | Room과의 연결 종료 | ||
publish() | 나 자신의 미디어인 로컬 미디어(Local Media)를 Room에 게시(송출) | ||
unpublish() | 나 자신의 미디어인 로컬 미디어(Local Media)의 Room에 게시(송출) 중단 | ||
subscribe() | Remote Participant가 게시(송출)한 비디오 구독 | ||
unsubscribe() | Remote Participant가 게시(송출)한 비디오 구독을 해제 | ||
getVideoOccupants() | 비디오를 구독 중인 참여자 ID 데이터를 가져옴 | ||
getAudioOccupants() | 오디오를 구독 중인 참여자 ID 데이터를 가져옴 | ||
setMuted() | 수신 중인 모든 오디오를 무음으로 설정 | ||
sendUserMessage() | Room의 다른 참여자에게 메시지 전달 | ||
requestScreenShare() | 화면 공유(Screen Share)를 요청 | ||
stopScreenShare() | 화면 공유를 중단 | ||
getAudioLevels() | 현재 발화 중인 참여자의 평균 오디오 레벨을 가져옴 | ||
getLocalStasReport() | 내가 생성한 로컬 미디어의 송출 스트림에 대한 WebRTC 통계 정보를 가져옴 | ||
getRemoteStasReport() | Remote Participant가 생성한 원격 미디어(Remote Media)의 수신 스트림에 대한 WebRTC 통계 정보를 가져옴 |
RoomDelegate
RoomDelegate는 Room에서 발생하는 이벤트를 처리하기 위한 Callback 이벤트입니다.
표RoomDelegate 이벤트 전체 목록대분류 | 구분 | 이벤트 | 설명 |
---|---|---|---|
RoomDelegate | Event | onConnecting | Room에 연결이 진행 중인 단계에서 발생 |
onConnected | 참여자가 Room에 연결이 완료되었을 때 발생 | ||
onDisconnected | Room에서 연결이 해제되면 발생 | ||
onError | 에러 발생 시 발생 | ||
onParticipantEntered | Room에 내가 아닌 Remote Participant가 입장을 완료했을 때 발생 | ||
onParticipantLeft | Remote Participant가 Room에서 퇴장했을 때 발생 | ||
onLocalMediaPublished | 내가 생성한 로컬 미디어가 게시(송출)되었을 때 발생 | ||
onLocalMediaUnpublished | Room에서 로컬 미디어의 게시(송출)가 해제되었을 때 발생 | ||
onRemoteVideoPublished | Remote Participant가 비디오를 게시(송출)했을 때 발생 | ||
onRemoteVideoUnpublished | Remote Participant가 비디오 게시(송출)를 중단했을 때 발생 | ||
onRemoteAudioPublished | Remote Participant가 오디오를 게시(송출)했을 때 발생 | ||
onRemoteAudioUnpublished | Remote Participant가 오디오 게시(송출)를 중단했을 때 발생 | ||
onRemoteAudioSubscribed | 다른 참여자의 오디오를 구독했을 때 발생 | ||
onRemoteAudioUnsubscribed | Remote Participant가 오디오 구독을 중단했을 때 발생 | ||
onRemoteVideoStateChanged | 다른 참여자의 비디오 상태가 변경 시 발생 | ||
onRemoteAudioStateChanged | 다른 참여자의 오디오 상태가 변경 시 발생 | ||
onUserMessage | 참여자가 메시지를 전송했을 때 발생 |
LocalParticipant
LocalParticipant 클래스는 카카오 i 커넥트 라이브 SDK의 주요 클래스 중 하나로, 로컬 참여자(나 자신)를 의미합니다. LocalParticipant 클래스는 Property로만 구성됩니다.
표LocalParticipant 프로퍼티 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
LocalParticipant | Property | id | Local Participant(로컬 참여자)의 ID |
audios | Local Participant(로컬 참여자)의 오디오 스트림 배열 | ||
videos | Local Participant(로컬 참여자)의 비디오 스트림 배열 |
RemoteParticipant
RemoteParticipant 클래스는 카카오 i 커넥트 라이브 SDK의 주요 클래스 중 하나로, Remote Participant는 다른 참여자를 의미합니다. RemoteParticipant 클래스는 Property만으로 구성됩니다.
표RemoteParticipant 프로퍼티 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
RemoteParticipant | Property | id | Remote Participant(리모트 참여자)의 ID |
audios | Remote Participant(리모트 참여자)의 오디오 스트림 배열 | ||
videos | Remote Participant(리모트 참여자)의 비디오 스트림 배열 |
LocalMedia
LocalMedia 클래스는 Local Participant(로컬 참여자)가 생성한 오디오와 비디오를 제어합니다. LocalMedia 클래스는 Property와 Method로 구성됩니다.
표LocalMedia 전체 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
LocalMedia | Property | video | 로컬 비디오의 스트림 |
audio | 로컬 오디오의 스트림 | ||
position | 현재 선택된 디바이스의 카메라 위치 | ||
isMirror | 카메라 좌우 반전 여부 | ||
audioLevel | 디바이스의 마이크로 입력되는 로컬 오디오 레벨(범위: 0~100) | ||
Method | start() | 로컬 미디어의 게시(송출) 시작 | |
stop() | 로컬 미디어의 게시(송출) 중단 | ||
switchCamera() | 디바이스의 카메라 위치 변경 |
LocalVideo
Local Participant(로컬 참여자)가 생성한 비디오를 Room에 송출하기 위한 로컬 비디오 스트림 클래스입니다.
표LocalVideo 전체 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
LocalVideo | Property | id | 로컬 비디오 ID |
owner | 로컬 비디오의 소유자(참여자) ID | ||
active | 비디오 스트림의 활성화 여부를 변경하거나 현재 활성화 여부를 가져옴 | ||
extraValue | 비디오 스트림 식별을 위해 임의 설정 가능한 레이블 정보 | ||
viewId | 비디오 스트림에 연결된 렌더뷰 ID | ||
Method | attach() | 비디오 스트림에 렌더뷰(Render View) 연결 | |
detach() | 비디오 스트림에 연결된 렌더뷰 해제 |
LocalAudio
Local Participant(로컬 참여자)가 생성한 오디오를 Room에 송출하기 위한 로컬 오디오 스트림 클래스입니다.
표LocalVideo 전체 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
LovalAudio | Property | id | 로컬 오디오 ID |
owner | 로컬 오디오의 소유자(참여자) ID | ||
active | 오디오 스트림의 활성화 여부를 변경하거나 현재 활성화 여부를 가져옴 | ||
extraValue | 로컬 오디오 스트림 식별을 위해 임의 설정 가능한 레이블 정보 | ||
alwaysOn | 로컬 참여자의 오디오를 항상 내보내고 싶을 때 설정 여부 |
RemoteVideo
RemoteVideo 클래스는 Remote Participant(리모트 참여자)가 생성한 리모트 비디오(Remote Video)를 관리합니다.
표RemoteVideo 전체 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
RemoveVideo | Property | id | 리모트 비디오 ID |
owner | 리모트 비디오 소유자(참여자) ID | ||
active | 리모트 비디오 스트림의 활성화 여부 | ||
extraValue | 리모트 비디오 스트림 식별을 위한 레이블 문자열 | ||
profile | 리모트 비디오 스트림의 프로파일 정보 | ||
pause | 리모트 비디오 스트림 수신을 일시 중지 | ||
viewId | 리모트 비디오 스트림에 연결된 렌더뷰 ID | ||
isSubscribed | 리모트 비디오 스트림의 구독 여부 | ||
Method | attach() | 리모트 비디오 스트림에 렌더뷰 연결 | |
detach() | 리모트 비디오 스트림에 연결된 렌더뷰 해제 | ||
setProfile() | 리모트 비디오 스트림의 프로파일 변경 |
RemoteAudio
RemoteAudio 클래스는 Remote Participant(리모트 참여자)가 생성한 리모트 오디오(Remote Audio)를 관리합니다.
표RemoteAudio 전체 목록클래스 | 구분 | 항목 | 설명 |
---|---|---|---|
RemoteAudio | Property | id | 리모트 오디오 ID |
owner | 리모트 오디오 소유자(참여자) ID | ||
active | 리모트 오디오 스트림의 활성화 여부 | ||
extraValue | 리모트 오디오 스트림 식별을 위한 레이블 문자열 | ||
alwaysOn | 리모트 오디오 스트림의 구독 상태 |
AudioSessionDelegate
AudioSessionDelegate는 WebRTC의 오디오 세션에서 전달하는 이벤트입니다. 이 이벤트는 필수 구현 요소는 아니며, 다른 앱이나 전화 등으로 인한 오디오 세션 관련 이벤트가 필요할 경우 구현하는 선택 이벤트입니다.
표AudioSessionDelegate 전체 목록이벤트 | 항목 | 설명 |
---|---|---|
AudioSessionDelegate | didBeginInterruption | 다른 앱으로 인해 오디오 인터럽트가 발생한 경우 |
didEndInterruption | 다른 앱으로 인해 발생한 오디오 인터럽트가 종료된 경우 | |
didChangeRoute | 오디오 장치가 변경된 경우 | |
mediaServerTerminated | iOS에서 오디오를 처리하는 오디오 세션 미디어 서버가 종료된 경우 | |
mediaServerReset | iOS에서 오디오를 처리하는 오디오 세션 미디어 서버가 초기화된 경우 | |
didChangeCanPlayOrRecord | 오디오 세션 카테고리의 재생/녹화 상태가 변경된 경우 | |
didStartPlayOrRecord | 오디오 세션에서 재생/녹화가 시작된 경우 | |
didStopPlayOrRecord | 오디오 세션에서 재생/녹화가 중단된 경우 | |
willSetActive | 오디오 세션의 활성(Active) 상태가 변경된 경우 | |
didSetActive | 오디오 세션의 활성 상태가 변경된 경우 | |
failedToSetActive | 오디오 세션의 활성 상태 변경이 실패된 경우 |
ScreenShare
Broadcast Extension에서 카카오 i 커넥트 라이브 서비스에 연결하기 위해 사용하는 클래스입니다. ScreenShare 클래스는 메서드로만 구성됩니다.
안내표ScreenShare 전체 목록
iOS 확장(Extension) 기능 동작을 위해서 Extension 설정이 필요합니다. 자세한 설명은 부록. Extension 사전 작업을 참고하시기 바랍니다.