본문으로 건너뛰기
Version: 5.5

그룹 통화 시작하기

PlanetKit을 사용하면 1대1 통화 또는 그룹 통화를 위한 음성 및 영상 통화 기능을 앱에 연동할 수 있습니다. 이 가이드에서는 Windows 앱에서 그룹 음성 통화 구현을 시작하는 방법을 설명합니다.

Note
  • 더욱 빠른 개발을 위해 빠른 시작을 기반으로 앱을 구현할 수 있습니다.
  • 이 시작하기 가이드에서는 애플리케이션 프레임워크로 MFC를 사용하는 예를 제공합니다.

필수 조건

  • 사용 중인 시스템이 시스템 요구사항을 충족하는지 확인하세요.
  • API key를 생성하세요. 자세한 내용은 개발 환경을 참조하세요.
  • 액세스 토큰을 생성하는 앱 서버 코드를 구현하세요. 자세한 내용은 액세스 토큰 생성 방법을 참조하세요.
  • Visual Studio 2022 이상과 다음 구성 요소를 설치하세요(Visual Studio가 이미 설치된 상태라면 [도구] > [도구 및 기능 가져오기]로 이동해 구성 요소를 설치할 수 있습니다).
    • C++를 사용한 데스크톱 개발: [워크로드] 탭에서 [C++를 사용한 데스크톱 개발]을 선택하세요.
    • 최신 v143 빌드 도구용 C++ MFC(x86 및 x64): [개별 구성 요소] 탭에서 [최신 v143 빌드 도구용 C++ MFC(x86 및 x64)]를 선택하세요.
  • PlanetKit Windows를 통해 PlanetKit SDK를 다운로드하세요.

프로젝트 생성

Visual Studio를 열고 다음과 같이 새 프로젝트를 만드세요.

  1. 메인 메뉴에서 [파일] > [새로 만들기] > [프로젝트]를 선택하세요.
  2. 프로젝트 생성 창의 목록에서 프로젝트 템플릿을 선택하세요. MFC 애플리케이션을 만들려면 [MFC 앱]을 선택하세요.
  3. [프로젝트 이름]에 애플리케이션 프로젝트 이름을 입력하고, [만들기]를 클릭하세요.
  4. [MFC 애플리케이션] 창의 [애플리케이션 종류] 이하 [애플리케이션 종류] 드롭다운에서 [대화 상자 기반]을 선택하고 [마침]을 클릭하세요.

SDK 설치

다음과 같이 프로젝트에 SDK를 설치하세요.

  1. [솔루션 탐색기]에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 [속성]을 클릭해 다음 프로젝트 속성을 구성하세요.
    1. [C/C++] > [일반] > [추가 포함 디렉터리]로 이동해 [편집...]을 클릭하고 PlanetKit SDK의 include 디렉터리 위치를 선택하세요.
    2. [링커] > [일반] > [추가 라이브러리 디렉터리]로 이동해 [편집...]을 클릭하고 PlanetKit SDK의 bin 디렉터리 위치를 선택하세요.
    3. [링커] > [입력] > [추가 종속성]으로 이동해 [편집...]을 클릭하고 개발에 사용된 플랫폼에 따라 PlanetKit 라이브러리의 이름을 입력하세요.
      • 플랫폼이 x64인 경우 PlanetKit64.lib를 입력하세요.
      • 플랫폼이 Win32인 경우 Planetkit.lib를 입력하세요.
  2. [확인]을 클릭하세요.

SDK 초기화

PlanetKit API를 호출하려면 먼저 PlanetKit을 초기화해야 합니다. Configuration 객체와 함께 PlanetKitManager::Initialize()를 사용해 PlanetKit을 초기화하세요.

다음으로 PlanetKitManager::UpdateServerUrl()을 사용해 서버 URL(planet_base_url)을 설정해야 합니다. 사용 중인 개발 환경에 따라 적절한 planet_base_url을 사용하세요.

void YourApplication::InitializePlanetkit()
{
PlanetKit::ConfigurationPtr pConfiguration = PlanetKit::Configuration::Create(L"./", L"./");

PlanetKit::PlanetKitManager::Initialize(pConfiguration);

PlanetKit::PlanetKitManagerPtr = PlanetKit::PlanetKitManager::GetInstance();

pPlanetKitManager->UpdateServerUrl(planet_base_url);
}
Note

앱에서 PlanetKitManager::Initialize() 메서드를 최초에 한 번 호출해야 합니다. 대화 상자 기반 MFC 애플리케이션의 경우 앱의 OnInitDialog() 재정의 함수에서 SDK를 초기화하는 것이 좋습니다.

액세스 토큰 획득

클라이언트 앱에서 앱 서버에 액세스 토큰 생성을 요청해 받으세요.

Note

PlanetKitManager::JoinConference()를 호출할 때마다 새로운 액세스 토큰을 받아서 사용해야 합니다.

그룹 음성 통화 참여

그룹 음성 통화에 참여하려면 IConferenceEvent 인터페이스의 콜백을 구현하고 ConferenceParamPtr 객체와 함께 PlanetKitManager::JoinConference()를 호출하세요.

class YourConferenceEventListener : public IConferenceEvent {
public:
// This is called when the call is connected.
// Write your own code in function.
void OnConnected(PlanetKitConferencePtr pPlanetKitConference, ConferenceConnectedParamPtr pConnectedParam);

// This is called when the call is disconnected.
// Write your own code in function.
void OnDisconnected(PlanetKitConferencePtr pPlanetKitConference, ConferenceDisconnectedParamPtr pDisconnectedParam);

// This is called when the list of peers is updated.
// Write your own code here.
void OnPeerListUpdate(PlanetKitConferencePtr pPlanetKitConference, ConferencePeerUpdateParamPtr pParam)

...

//
// Also, you should implement other override functions.
//
}

class YourApplication {
private :
// Prepare callback event listener instance.
YourConferenceEventListener m_yourConferenceEventListener;

// Prepare PlanetKitConference instance.
PlanetKit::PlanetKitConferencePtr m_pConference;
};

void YourApplication::JoinConferenceExample(const std::wstring strRoomId, const std::wstring strAccessToken) {
// Prepare local user's ID.
std::wstring strUserId = "local user's user id";
std::wstring strServiceId = "local user's service id";

// Create the UserId object.
PlanetKit::UserIdPtr pUserId = PlanetKit::UserId::Create(strUserId.c_str(), strServiceId.c_str());

// Create MakeCallParam with Create API.
PlanetKit::ConferenceParamPtr pConferenceParam = PlanetKit::ConferenceParam::CreateWithAccessToken(
pUserId,
strRoomId.c_str(),
strServiceId.c_str(),
strAccessToken.c_str()
);

// Set required parameter.
pConferenceParam->SetConferenceEvent(&m_yourConferenceEventListener);

// Now you have to create a PlanetKit::PlanetKitConference type object
// through the PlanetKit::PlanetKitManager::JoinConference() function.
// Please note that the PlanetKit::PlanetKitConference type object is the main call instance
// that controls call-related functions after the call setup completion.
PlanetKit::PlanetKitManagerPtr pPlanetKitManager = PlanetKit::PlanetKitManager::GetInstance();

PlanetKit::SStartResult sStartResult = pPlanetKitManager->JoinConference(pConferenceParam, &m_pConference);
if (sStartResult.bSuccess == false) {
// Handle an error by referring to sStartResult.reason
}
}
Note

사용자가 클라이언트 앱에서 그룹 통화 방에 입장하려면 방 ID가 필요하므로, 애플리케이션에서 정의한 통신 채널을 통해 방 ID를 다른 사용자와 공유해야 합니다.

다음 단계

아래 문서를 참조해 PlanetKit에서 제공하는 다양한 기능과 각 기능의 사용 방법을 자세히 살펴보세요.

  • 통화 흐름: 통화 유형별 통화 흐름을 살펴보세요.
  • 서브그룹: 여러 개의 하위 그룹이 있는 방이나 통역 방과 같은 고급 기능을 구현할 수 있는 서브그룹 기능을 살펴보세요.
  • 확장 기능: 화면 공유, 데이터 세션 등 다양한 확장 기능을 살펴보세요.
  • 예제 코드: 앱을 구현하는 데 참고할 수 있는 예제 코드를 확인하세요.
  • 참조 문서: API 레퍼런스, API 변경 내역, 릴리스 노트를 확인하세요.