그룹 통화 흐름
이 페이지는 LINE Planet의 그룹 통화(컨퍼런스) 흐름을 보여줍니다.
이 페이지의 다이어그램에서 앱 클라이언트와 앱 서버는 애플리케이션에 속하며, PlanetKit와 LINE Planet Cloud는 LINE Planet에 속합니다.
그룹 통화 입장
그룹 통화에 입장하려면 앱 클라이언트가 joinConference()
를 호출해야 합니다. 사용자가 그룹 통화에 입장하면 didConnect
이벤트가 발생합니다.
그룹 통화에 입장하려면 방 ID가 필요합니다. 따라서 앱 클라이언트는 그룹 통화에 입장하기 전에 애플리케이션 통신 채널을 통해 방 ID를 공유해야 합니다.
아래 다이어그램은 그룹 통화에 입장하는 흐름을 보여주며, 여기서는 Client 01이 비디오를 켠 채로 그룹 통화에 입장한 후 Client K가 비디오를 켜지 않고 입장합니다.
- Client 01이 통화에 입장하려고 하면 Client 01의 앱 클라이언트가
joinConference()
를 호출합니다. - Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 새 그룹 통화를 알립니다.
- Client 01의 앱 클라이언트에서
didConnect
이벤트가 발생합니다. - Client K가 통화에 입장하려고 하면 Client K의 앱 클라이언트가
joinConference()
를 호출합니다. - Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 그룹 통화의 상태 변경을 알립니다.
- Client 01의 앱 클라이언트에서
peerListDidUpdate
이벤트가 발생하고, Client K의 앱 클라이언트에서didConnect
,peerListDidUpdate
,peersVideoDidUpdate
이벤트가 발생합니다.
여기서 3가지 관련 이벤트를 볼 수 있습니다.
이벤트 | 발생 조건 | 설명 |
---|---|---|
didConnect | joinConference() API 호출 후 | 완료 콜백 |
peerListDidUpdate | 누군가 방에 입장하거나 퇴장한 후 | 새로 입장하거나 퇴장한 참여자 목록 전달 |
peersVideoDidUpdate | - 방에 입장한 상태에서 비디오를 활성화 또는 비활성화한 후 - 비디오를 활성화한 상태로 입장할 때 | 비디오를 활성화 또는 비활성화한 참여자 목록 전달 |
피어 목록 업데이트 이벤트
peerListDidUpdate
는 참여자가 업데이트될 때마다 발생합니다. 따라서 Client K가 참여하면 Client 01과 Client K 모두 이 이벤트를 받습니다.
새로운 참가자에 대해 peerListDidUpdate
가 발생하면 다른 참가자는 해당 참가자에 대해 PlanetKitPeerControl
인스턴스를 생성하고 이 PlanetKitPeerControl
인스턴스를 사용하여 참가자의 비디오를 시작 또는 중지하거나 참가자의 상태 변경을 기반으로 참가자의 UI를 업데이트하는 등의 작업을 수행할 수 있습니다.
PlanetKitPeerControl
사용 방법에 대한 자세한 내용은 그룹 영상 통화 예제 코드를 참고하세요.
피어 비디오 업데이트 이벤트
peersVideoDidUpdate
는 참여자의 비디오 스트림이 바뀔 때마다 발생합니다.
위 예제에서는 Client 01만 비디오를 전송합니다. Client K는 peersVideoDidUpdate
이벤트로 Client 01이 비디오를 활성했다는 것을 알게 됩니다.
peersVideoDidUpdate
이벤트는 음성 통화 중에 영상 통화를 활성화했을 때도 발생할 수 있습니다. 더 자세한 내용은 음성 통화 중 영상 통화 활성화를 참고하세요.
이벤트의 업데이트 간격
앱 클라이언트는 업데이트 간격 내의 최신 정보를 기반으로 peerListDidUpdate
와 peersVideoDidUpdate
를 수신합니다. 결과적으로 앱 클라이언트는 누군가 입장 즉시 퇴장하는 경우처럼 업데이트 간격 내에서 발생하는 빠른 변경에 대한 이벤트를 수신하지 못할 수 있습니다.
LINE Planet Cloud는 내부적으로 이를 업데이트하는 스케줄러를 갖고 있으며, 스케줄링 간격은 현재 참여자 수가 늘어난 만큼 길어집니다. 즉, 참가자 수에 비례해 정보 업데이트가 늦어지는 것에 유의하세요.
피어 비디오 요청
didConnect
이벤트가 발생한 후 앱 클라이언트는 자동으로 오디오 스트림을 받습니다. 단, 비디오 스트림은 앱 클라이언트가 적절한 비디오 해상도를 정해 PlanetKitPeerControl
의 startVideo()
를 호출하지 않는 한 LINE Planet Cloud에서 자동으로 전송하지 않습니다.
애플리케이션에서는 PlanetKitConferenceDelegate
의 peersVideoDidUpdate
콜백이나 PlanetKitPeerControlDelegate
의 didUpdateVideo
콜백을 통해 누가 비디오 스트림을 활성화했는지 알 수 있습니다.
PlanetKit이 비디오 스트림 수에 따라 권장 해상도를 사용하도록 startVideo()
를 호출할 때 해상도 인자로 recommended
를 사용하는 것이 좋습니다. 자세한 설명은 그룹 통화의 피어 비디오 해상도를 참조하세요.
그룹 통화 퇴장
그룹 통화에서 퇴장하려면 앱 클라이언트가 leaveConference()
를 호출해야 합니다. 그룹 통화에서 퇴장한 사용자의 앱 클라이언트에서는 didDisconnect
이벤트가 발생합니다. 참여자 목록이 변경되었으므로 피어의 앱 클라이언트에서는 peerListDidUpdate
이벤트가 발생합니다.
비디오가 활성화된 참가자
비디오를 활성화한 참가자가 방을 나가면 다른 참가자들은 peersVideoDidUpdate
이벤트를 받습니다.
- Client 01이 통화에서 퇴장하려고 하면 Client 01의 앱 클라이언트가
leaveConference()
를 호출합니다. - Client K의 앱 클라이언트에서
peersVideoDidUpdate
이벤트와peerListDidUpdate
이벤트가 발생하고, Client 01의 앱 클라이언트에서didDisconnect
이벤트가 발생합니다. - Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 그룹 통화의 상태 변경을 알립니다.
- 화면 공유 영상을 전송하던 참가자가 방을 나가면 상태가
DISABLED
인screenShareDidUpdate
가 다른 참가자에게 전송됩니다. - 상태가
DISABLED
인peersVideoDidUpdate
또는screenShareDidUpdate
이벤트는 PlanetKit 4.4 이상을 사용하는 참가자에게만 전송됩니다.
비디오가 비활성화된 참가자
비디오를 비활성화한 참가자가 방을 나갈 경우에는 peersVideoDidUpdate
가 발생하지 않습니다.
- Client K가 통화에서 퇴장하려고 하면 Client K의 앱 클라이언트가
leaveConference()
를 호출합니다. - Client 01의 앱 클라이언트에서
peerListDidUpdate
이벤트가 발생하고, Client K의 앱 클라이언트에서didDisconnect
이벤트가 발생힙니다. - Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 그룹 통화의 상태 변경을 알립니다.
관련 API
그룹 통화와 관련된 API는 다음과 같습니다.
클라이언트 API
메서드
이벤트
-
didConnect
iOS, macOS -
didDisconnect
iOS, macOS -
peerListDidUpdate
iOS, macOS -
didUpdateVideo
iOS, macOS