버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인 하고자 하는 idpCode 셋팅
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;

KakaoGame::API::KGTPlayer playerApi;

playerApi.login(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 로그인과 플랫폼 로그인 성공
		KakaoGame::Data::KGTPlayer player;
		KakaoGame::API::KGTPlayer playerApi;
		
		playerApi.getCurrentPlayer(player);
		
		std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
		std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
		
		// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
	}
	else
	{
		// IDP 로그인 혹은 플랫폼 로그인 실패
		// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
		if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
			|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
			|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
		{
			// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
		}
		else if (KakaoGame::Data::KGTResultCode::Forbidden== result.code)
		{
			// [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 처리가 필요합니다.
		}
		else if (KakaoGame::Data::KGTResultCode::UserCanceled== result.code)
		{
			// [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.
		}
		else
		{
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

...

로그아웃

...

발췌문 삽입
로그아웃 SDK 예제
로그아웃 SDK 예제
namelogout
nopaneltrue

기본 로그아웃 UI를 사용하지 않는 로그아웃하기

발췌문 삽입
로그아웃 SDK 예제
로그아웃 SDK 예제
namelogout_custom
nopaneltrue

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인을 요청하는 사용자 아이디
std::wstring playerId;

//
스퀘어에서
전달받은 토큰
std::wstring squareToken;

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

// 채널링에서는 강제로 로그아웃 UI를 표시하지 않는다.
playerApi.loginIdpWithSquareTokenlogout(GetSafeHwnd(), playerId, squareTokenfalse, result);

if (result.isSuccess())
{
	// 로그아웃 성공
	
	// IDP 로그인과 플랫폼 로그인 성공
	KakaoGame::Data::KGTPlayer player;
	[TODO] 시작 화면으로 돌아가기
}
else
{
	// 로그아웃 실패
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTPlayer playerApi;

	
	playerApi.getCurrentPlayer(player);
	
	std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
	std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
	
// 채널링에서는 강제로 로그아웃 UI를 표시하지 않는다.
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 로그아웃 성공
		
		// [TODO] 로그인이시작 성공하였으므로화면으로 게임 화면으로 이동합니다.
돌아가기
	}
	else
	{
		// IDP 로그인 혹은 플랫폼 로그인 로그아웃 실패
	// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
	if (}
});

탈퇴

...

기본 탈퇴 UI를 사용하지 않는 탈퇴하기

기본 탈퇴 UI를 사용하지 않는 탈퇴하는 예제입니다.

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
		|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
		|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
	{
	KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

// 채널링에서는 강제로 로그아웃 UI를 표시하지 않는다.
playerApi.unregister(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
	// 탈퇴 성공
	// [TODO] 네트워크시작 에러가화면으로 발생한돌아가기
경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
	}
	}
else
	{
		// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
	}탈퇴 실패
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인을 요청하는 사용자 아이디
std::wstring playerIdKakaoGame::API::KGTPlayer playerApi;

// 스퀘어에서채널링에서는 전달받은강제로 토큰
std::wstring squareToken;

KakaoGame::API::KGTPlayer playerApi;

playerApi.login로그아웃 UI를 표시하지 않는다.
playerApi.unregister(GetSafeHwnd(), playerIdfalse, squareToken, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 로그인과 플랫폼 로그인 탈퇴 성공
		KakaoGame::Data::KGTPlayer player;
		KakaoGame::API::KGTPlayer playerApi;
		
		playerApi.getCurrentPlayer(player);
		
		std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
		std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
		
		// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
	}
	else
	{
		// IDP 로그인 혹은 플랫폼 로그인 실패
		// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
		if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
			|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
			|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
		{
			// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
		}
		else
		{
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

로그아웃

...

기본 로그아웃 UI를 사용하지 않는 로그아웃하기

...

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), false, result);

if (result.isSuccess())
{
	// 로그아웃 성공
	
	// [TODO] 시작 화면으로 돌아가기
}
else
{
	// 로그아웃 실패
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 로그아웃 성공
		
		// [TODO] 시작 화면으로 돌아가기
	}
	else
	{
		// 로그아웃 실패
	}
});

탈퇴

계정 연결

...

기본 계정 연결 UI를 사용하지 않는 계정 연결하기

...

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 연결하고자 하는 idpCode 셋팅
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.connect(GetSafeHwnd(), idpCode, result);

if (result.isSuccess())
{
	// IDP 연결 성공
	// Player ID 는 변경되지 않습니다.
}
else
{
	// IDP 연결 실패
	if (KakaoGame::Data::KGTResultCode::InvalidParameter== result.code)
	{
		// 잘못된 인자가 전달 된 경우
	}
	else if (KakaoGame::Data::KGTResultCode::NotAuthorized== result.code)
	{
		// 현재 로그인이 안되어 있는 경우
	}
	else if (KakaoGame::Data::KGTResultCode::InvalidState== result.code)
	{
		// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
	}
	else if (KakaoGame::Data::KGTResultCode::AlreadyUsedIDPAccount== result.code)
	{
		// 이미 연결되어 있는 계정이 있는 경우
	}
	else
	{
		// 기타 에러 발생
	}
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 연결하고자 하는 idpCode 셋팅
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;

KakaoGame::API::KGTPlayer playerApi;

playerApi.connect(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 연결 성공
		// Player ID 는 변경되지 않습니다.
	}
	else
	{
		// IDP 연결 실패
		if (KakaoGame::Data::KGTResultCode::InvalidParameter== result.code)
		{
			// 잘못된 인자가 전달 된 경우
		}
		else if (KakaoGame::Data::KGTResultCode::NotAuthorized== result.code)
		{
			// 현재 로그인이 안되어 있는 경우
		}
		else if (KakaoGame::Data::KGTResultCode::InvalidState== result.code)
		{
			// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
		}
		else if (KakaoGame::Data::KGTResultCode::AlreadyUsedIDPAccount== result.code)
		{
			// 이미 연결되어 있는 계정이 있는 경우
		}
		else
		{
			// 기타 에러 발생
		}
	}
});

프로필

내 정보 조회하기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;

playerApi.getCurrentPlayer(player);

내 IDP 정보 조회하기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;

playerApi.getCurrentPlayer(player);

player.kakaoProfile;

시스템 정보

언어 코드 가져오기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring languageCode = systemApi.getLanguageCode();

언어 태그 가져오기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring languageCode = systemApi.getLanguageTag();

국가 코드 가져오기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring countryCode = systemApi.getCountryCode();

IP 기반 국가 코드 가져오기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring countryCode = systemApi.getGeoCountryCode();

기기 아이디 가져오기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring deviceId = systemApi.getDeviceId();

기기 모델 가져오기

...

// [TODO] 시작 화면으로 돌아가기
	}
	else
	{
		// 탈퇴 실패
	}
});

프로필

내 정보 조회하기

발췌문 삽입
프로필 SDK 예제
프로필 SDK 예제
nameplayer_currentPlayer
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;

playerApi.getCurrentPlayer(player);

내 IDP 정보 조회하기

발췌문 삽입
프로필 SDK 예제
프로필 SDK 예제
nameplayer_idpProfile
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::APIData::KGTSystem systemApi;

std::wstring deviceModel = systemApi.getDeviceModel();

OS 이름 가져오기

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KGTPlayer player;
KakaoGame::API::KGTSystem systemApi;

std::wstring osName = systemApi.getOSName();

...

KGTPlayer playerApi;

playerApi.getCurrentPlayer(player);

player.kakaoProfile;

시스템 정보

...

언어 코드 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_islanguage_network_connectedcode
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

boolean networkConnectedstd::wstring languageCode = systemApi.isNetworkConnectedgetLanguageCode();

...

언어 태그 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_networklanguage_typetag
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring networkTypelanguageCode = systemApi.getNetworkTypegetLanguageTag();

...

국가 코드 가져오기

...

설정된 게임 언어 코드를 반환한다.

...

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_country_code
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring gameLanguageCodecountryCode = systemApi.getGameLanguageCodegetCountryCode();

게임 언어 코드 설정하기

게임에서 사용하는 언어를 플랫폼에서 동기화 해서 사용하도록 설정한다.

아래와 같은 언어 코드를 지원한다.

(Start API 호출 이전에 설정 가능)

...

device: 디바이스 설정 값. 디바이스 설정 값으로 되돌릴 때 사용할 수 있음. (default)

...

en: 영어

...

ko: 한국어

...

ja: 일어

...

zh_hant: 중국어 (번체)

...

IP 기반 국가 코드 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_geo_country_code
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

//
KakaoGame::DataAPI::KGTLanguageCodeKGTSystem languageCodesystemApi;
=
KakaoGame::Data::KGTLanguageCode::en; // 영어
//std::wstring countryCode = systemApi.getGeoCountryCode();

기기 아이디 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_device_id
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::DataAPI::KGTLanguageCodeKGTSystem languageCodesystemApi;
=
KakaoGamestd::Data::KGTLanguageCode::ko; // 한국어
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::ja; // 일어
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::zh_hant; // 중국어 (번체)
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::zh_hans; // 중국어 (간체)
KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::device; // 디바이스 설정 값wstring deviceId = systemApi.getDeviceId();

기기 모델 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_device_model
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring deviceModel = systemApi.getDeviceModel();

OS 이름 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_os_name
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring osName = systemApi.getOSName();

네트워크 연결 여부 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_is_network_connected
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

boolean networkConnected = systemApi.isNetworkConnected();

연결된 네트워크 타입 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_network_type
nopaneltrue

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTSystem systemApi;

std::wstring networkType = systemApi.setGameLanguageCodegetNetworkType(languageCode);

카카오 연동 기능

...

카카오톡 게임 메시지 수신 여부 설정하기

...