본문으로 건너뛰기
Version: 7.1

그룹 통화 흐름

이 페이지는 LINE Planet의 그룹 통화(컨퍼런스) 흐름을 보여줍니다.

이 페이지의 다이어그램에서 앱 클라이언트와 앱 서버는 애플리케이션에 속하며, PlanetKit와 LINE Planet Cloud는 LINE Planet에 속합니다.

그룹 통화 입장​

그룹 통화에 입장하려면 앱 클라이언트가 joinConference()를 호출해야 합니다. 사용자가 그룹 통화에 입장하면 didConnect 이벤트가 발생합니다.

Note

그룹 통화에 입장하려면 방 ID가 필요합니다. 따라서 앱 클라이언트는 그룹 통화에 입장하기 전에 애플리케이션 통신 채널을 통해 방 ID를 공유해야 합니다.

아래 다이어그램은 그룹 통화에 입장하는 흐름을 보여주며, 여기서는 Client 01이 비디오를 켠 채로 그룹 통화에 입장한 후 Client K가 비디오를 켜지 않고 입장합니다.

그룹 통화 입장 시퀀스 다이어그램
  1. Client 01이 통화에 입장하려고 하면 Client 01의 앱 클라이언트가 joinConference()를 호출합니다.
  2. Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 새 그룹 통화를 알립니다.
  3. Client 01의 앱 클라이언트에서 didConnect 이벤트가 발생합니다.
  4. Client K가 통화에 입장하려고 하면 Client K의 앱 클라이언트가 joinConference()를 호출합니다.
  5. Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 그룹 통화의 상태 변경을 알립니다.
  6. Client 01의 앱 클라이언트에서 peerListDidUpdate 이벤트가 발생하고, Client K의 앱 클라이언트에서 didConnect, peerListDidUpdate, peersVideoDidUpdate 이벤트가 발생합니다.

여기서 3가지 관련 이벤트를 볼 수 있습니다.

이벤트발생 조건설명
didConnectjoinConference() API 호출 후완료 콜백
peerListDidUpdate누군가 방에 입장하거나 퇴장한 후새로 입장하거나 퇴장한 참여자 목록 전달
peersVideoDidUpdate- 방에 입장한 상태에서 비디오를 활성화 또는 비활성화한 후
- 비디오를 활성화한 상태로 입장할 때
비디오를 활성화 또는 비활성화한 참여자 목록 전달

피어 목록 업데이트 이벤트​

peerListDidUpdate는 참여자가 업데이트될 때마다 발생합니다. 따라서 Client K가 참여하면 Client 01과 Client K 모두 이 이벤트를 받습니다.

새로운 참가자에 대해 peerListDidUpdate가 발생하면 다른 참가자는 해당 참가자에 대해 PlanetKitPeerControl 인스턴스를 생성하고 이 PlanetKitPeerControl 인스턴스를 사용하여 참가자의 비디오를 시작 또는 중지하거나 참가자의 상태 변경을 기반으로 참가자의 UI를 업데이트하는 등의 작업을 수행할 수 있습니다.

Note

PlanetKitPeerControl 사용 방법에 대한 자세한 내용은 그룹 영상 통화 예제 코드를 참고하세요.

피어 비디오 업데이트 이벤트​

peersVideoDidUpdate는 참여자의 비디오 스트림이 바뀔 때마다 발생합니다.

위 예제에서는 Client 01만 비디오를 전송합니다. Client K는 peersVideoDidUpdate 이벤트로 Client 01이 비디오를 활성했다는 것을 알게 됩니다.

Tip

peersVideoDidUpdate 이벤트는 음성 통화 중에 영상 통화를 활성화했을 때도 발생할 수 있습니다. 더 자세한 내용은 영상 통화 활성화를 참고하세요.

이벤트의 업데이트 간격​

앱 클라이언트는 업데이트 간격 내의 최신 정보를 기반으로 peerListDidUpdate와 peersVideoDidUpdate를 수신합니다. 결과적으로 앱 클라이언트는 누군가 입장 즉시 퇴장하는 경우처럼 업데이트 간격 내에서 발생하는 빠른 변경에 대한 이벤트를 수신하지 못할 수 있습니다.

LINE Planet Cloud는 내부적으로 이를 업데이트하는 스케줄러를 갖고 있으며, 스케줄링 간격은 현재 참여자 수가 늘어난 만큼 길어집니다. 즉, 참가자 수에 비례해 정보 업데이트가 늦어지는 것에 유의하세요.

피어 비디오 요청​

didConnect 이벤트가 발생한 후 앱 클라이언트는 자동으로 오디오 스트림을 받습니다. 단, 비디오 스트림은 앱 클라이언트가 적절한 비디오 해상도를 정해 PlanetKitPeerControl의 startVideo()를 호출하지 않는 한 LINE Planet Cloud에서 자동으로 전송하지 않습니다.

애플리케이션에서는 PlanetKitConferenceDelegate의 peersVideoDidUpdate 콜백이나 PlanetKitPeerControlDelegate의 didUpdateVideo 콜백을 통해 누가 비디오 스트림을 활성화했는지 알 수 있습니다.

그룹 통화 피어 비디오 요청 시퀀스 다이어그램

PlanetKit이 비디오 스트림 수에 따라 권장 해상도를 사용하도록 startVideo()를 호출할 때 해상도 인자로 recommended를 사용하는 것이 좋습니다. 자세한 설명은 그룹 통화의 피어 비디오 해상도를 참조하세요.

Tip

운영체제의 UI 프레임워크에 따라, 피어 비디오 스트림을 렌더링하기 위해 추가적인 API를 호출해야 할 수도 있습니다. API 레퍼런스를 확인하세요.

그룹 통화 퇴장​

그룹 통화에서 퇴장하려면 앱 클라이언트가 leaveConference()를 호출해야 합니다. 그룹 통화에서 퇴장한 사용자의 앱 클라이언트에서는 didDisconnect 이벤트가 발생합니다. 참여자 목록이 변경되었으므로 피어의 앱 클라이언트에서는 peerListDidUpdate 이벤트가 발생합니다.

비디오가 활성화된 참가자​

비디오를 활성화한 참가자가 방을 나가면 다른 참가자들은 peersVideoDidUpdate 이벤트를 받습니다.

그룹 통화 비디오 활성화 상태에서 퇴장 시퀀스 다이어그램
  1. Client 01이 통화에서 퇴장하려고 하면 Client 01의 앱 클라이언트가 leaveConference()를 호출합니다.
  2. Client K의 앱 클라이언트에서 peersVideoDidUpdate 이벤트와 peerListDidUpdate 이벤트가 발생하고, Client 01의 앱 클라이언트에서 didDisconnect 이벤트가 발생합니다.
  3. Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 그룹 통화의 상태 변경을 알립니다.
Note

화면 공유 영상을 전송하던 참가자가 방을 나가면 상태가 DISABLED인 screenShareDidUpdate가 다른 참가자에게 전송됩니다.

비디오가 비활성화된 참가자​

비디오를 비활성화한 참가자가 방을 나갈 경우에는 peersVideoDidUpdate가 발생하지 않습니다.

그룹 통화 비디오 비활성화 상태에서 퇴장 시퀀스 다��이어그램
  1. Client K가 통화에서 퇴장하려고 하면 Client K의 앱 클라이언트가 leaveConference()를 호출합니다.
  2. Client 01의 앱 클라이언트에서 peerListDidUpdate 이벤트가 발생하고, Client K의 앱 클라이언트에서 didDisconnect 이벤트가 발생힙니다.
  3. Planet Cloud는 Group Call Event 콜백을 호출하여 앱 서버에 그룹 통화의 상태 변경을 알립니다.

관련 API​

그룹 통화와 관련된 API는 다음과 같습니다.

클라이언트 API​

메서드​

이벤트​

서버 API​

관련 예제 코드​