그룹 통화 시작하기
PlanetKit을 사용하면 1대1 통화 또는 그룹 통화를 위한 음성 및 영상 통화 기능을 앱에 연동할 수 있습니다. 이 가이드에서는 Windows 앱에서 그룹 음성 통화 구현을 시작하는 방법을 설명합니다.
- 더욱 빠른 개발을 위해 빠른 시작을 기반으로 앱을 구현할 수 있습니다.
- 이 시작하기 가이드에서는 애플리케이션 프레임워크로 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를 열고 다음과 같이 새 프로젝트를 만드세요.
- 메인 메뉴에서 [파일] > [새로 만들기] > [프로젝트]를 선택하세요.
- 프로젝트 생성 창의 목록에서 프로젝트 템플릿을 선택하세요. MFC 애플리케이션을 만들려면 [MFC 앱]을 선택하세요.
- [프로젝트 이름]에 애플리케이션 프로젝트 이름을 입력하고, [만들기]를 클릭하세요.
- [MFC 애플리케이션] 창의 [애플리케이션 종류] 이하 [애플리케이션 종류] 드롭다운에서 [대화 상자 기반]을 선택하고 [마침]을 클릭하세요.
SDK 설치
다음과 같이 프로젝트에 SDK를 설치하세요.
- [솔루션 탐색기]에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 [속성]을 클릭해 다음 프로젝트 속성을 구성하세요.
- [C/C++] > [일반] > [추가 포함 디렉터리]로 이동해 [편집...]을 클릭하고 PlanetKit SDK의
include
디렉터리 위치를 선택하세요. - [링커] > [일반] > [추가 라이브러리 디렉터리]로 이동해 [편집...]을 클릭하고 PlanetKit SDK의
bin
디렉터리 위치를 선택하세요. - [링커] > [입력] > [추가 종속성]으로 이동해 [편집...]을 클릭하고 개발에 사용된 플랫폼에 따라 PlanetKit 라이브러리의 이름을 입력하세요.
- 플랫폼이 x64인 경우
PlanetKit64.lib
를 입력하세요. - 플랫폼이 Win32인 경우
Planetkit.lib
를 입력하세요.
- 플랫폼이 x64인 경우
- [C/C++] > [일반] > [추가 포함 디렉터리]로 이동해 [편집...]을 클릭하고 PlanetKit SDK의
- [확인]을 클릭하세요.
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);
}
앱에서 PlanetKitManager::Initialize()
메서드를 최초에 한 번 호출해야 합니다. 대화 상자 기반 MFC 애플리케이션의 경우 앱의 OnInitDialog()
재정의 함수에서 SDK를 초기화하는 것이 좋습니다.
액세스 토큰 획득
클라이언트 앱에서 앱 서버에 액세스 토큰 생성을 요청해 받으세요.
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
}
}
사용자가 클라이언트 앱에서 그룹 통화 방에 입장하려면 방 ID가 필요하므로, 애플리케이션에서 정의한 통신 채널을 통해 방 ID를 다른 사용자와 공유해야 합니다.
다음 단계
아래 문서를 참조해 PlanetKit에서 제공하는 다양한 기능과 각 기능의 사용 방법을 자세히 살펴보세요.