버전 비교

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

...

초기화 및 상태변화 이벤트 처리

...

SDK 초기화

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_init_sdk
nopaneltrue

코드 블럭
languagecpp
std::map<std::wstring, std::wstring> kakaoSetting;
kakaoSetting.insert(std::pair<std::wstring, std::wstring>(TEXT("jsKey"), TEXT("b8fbf489943235c3ca873cd8804ca9c6")));

std::map<KakaoGame::Data::KGTIdpCode, std::map<std::wstring, std::wstring>> idpSettings;
idpSettings.insert(std::pair<KakaoGame::Data::KGTIdpCode, std::map<std::wstring, std::wstring>>(KakaoGame::Data::KGTIdpCode::Kakao, kakaoSetting));

KakaoGame::Data::KGTConfig config;
config.setAppInfo(
	TEXT("1113970"), // appID
	TEXT("5b23360a86e87ba790b39475a98579bd"), // appSecret
	TEXT("1.0.0"), // appVersion
	TEXT("gameWeb"), // market
	TEXT(""), // ageRating
	KakaoGame::Data::KGTServerType::QA, // server type
	KakaoGame::Data::KGTLogLevel::None, // log level
	idpSettings // idpSettings
);

KakaoGame::API::KGTApplication applicationApi;
applicationApi.initSDK(config);

스타트 (Start) 하기

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_start
nopaneltrue

...

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

KakaoGame::API::KGTApplication applicationApi;

applicationApi.start(GetSafeHwnd(), [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 스타트가 성공 한 경우
		
		// 자동로그인 여부
		KakaoGame::API::KGTPlayer playerApi;
		boolean isLoggedIn = playerApi.isLoggedIn();
		
		if (isLoggedIn)
		{
			// 플랫폼에서 발급한 현재 Player의 ID
			KakaoGame::Data::KGTPlayer player;
			playerApi.getCurrentPlayer(player);
			
			std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
			std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
			
			// [TODO] 게임 화면으로 이동 합니다.
		}
		else
		{
			// [TODO] 자동로그인이 안 된 경우 로그인 화면으로 이동 합니다.
		}
	}
	else
	{
		// 스타트가 실패 한 경우 - 초기화가 실패한 경우 이므로 스타트를 재시도 하거나 앱을 종료 하여야 합니다.
		if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
			|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
			|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
		{
			// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
		}
		else
		{
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 스타트 재시도 요청 하여야 합니다. - 문제가 반복해서 발생하는 경우 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

로그인

...

발췌문 삽입
로그인 SDK 예제
로그인 SDK 예제
namelogin
nopaneltrue

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

발췌문 삽입
로그인 SDK 예제
로그인 SDK 예제
namelogin_custom
nopaneltrue

...

코드 블럭
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"

KakaoGame::API::KGTPlayer playerApi;

// 채널링에서는 강제로 로그아웃 UI를 표시하지 않는다.
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 로그아웃 성공
		
		// [TODO] 시작 화면으로 돌아가기
	}
	else
	{
		// 로그아웃 실패
	}
});

탈퇴

...

발췌문 삽입
탈퇴 SDK 예제
탈퇴 SDK 예제
nameunregister
nopaneltrue

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

발췌문 삽입
탈퇴 SDK 예제
탈퇴 SDK 예제
nameunregister_custom
nopaneltrue

...

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

KakaoGame::API::KGTPlayer playerApi;

playerApi.unregister(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 탈퇴 성공
		
		// [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::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;

playerApi.getCurrentPlayer(player);

player.kakaoProfile;

시스템 정보

...

언어 코드 가져오기

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

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

KakaoGame::API::KGTSystem systemApi;

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

언어 태그 가져오기

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

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

KakaoGame::API::KGTSystem systemApi;

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

국가 코드 가져오기

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

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

KakaoGame::API::KGTSystem systemApi;

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

IP 기반 국가 코드 가져오기

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

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

KakaoGame::API::KGTSystem systemApi;

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

기기 아이디 가져오기

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

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

KakaoGame::API::KGTSystem systemApi;

std::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.getNetworkType();

카카오 연동 기능

...

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

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_show_setting
nopaneltrue

...

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

KakaoGame::API::KGTKakaoTalk kakaotalkApi;

// 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기
kakaotalkApi.showSetting(GetSafeHwnd(), [this](KakaoGame::Data::KGTResult result, bool isAlloweMe) {
	if (result.isSuccess())
	{
		// 카카오톡 게임 메시지 수신 여부 설정 성공
		isAlloweMe; // 설정된 메시지 수신 허용 여부
	}
	else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
	{
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	}
	else
	{
		// 카카오톡 게임 메시지 수신 여부 설정 실패
	}
});

카카오톡 프로필 조회하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_talk_profile
nopaneltrue

...

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

KakaoGame::API::KGTKakaoTalk kakaotalkApi;

// 카카오톡 프로필 조회하기
kakaotalkApi.talkProfile([this](KakaoGame::Data::KGTResult result, KakaoGame::Data::KGTKakaoTalkProfile profile) {
	if (result.isSuccess())
	{
		// 카카오톡 프로필 조회 성공
		profile; // 로그인한 유저의 카카오톡 프로필 정보
	}
	else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
	{
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	}
	else
	{
		// 카카오톡 프로필 조회 실패
	}
});

카카오톡 게임 친구 목록 조회하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_friends
nopaneltrue

...

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

KakaoGame::API::KGTKakaoTalk kakaotalkApi;

// 게임 친구 목록 조회하기
kakaotalkApi.friends([this](KakaoGame::Data::KGTResult result, std::vector<KakaoGame::Data::KGTPlayer> players) {
	if (result.isSuccess())
	{
		// 카카오톡 게임 친구 목록 조회 성공.
		// 게임 친구 목록
		for each (auto player in players)
		{
		}
	}
	else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
	{
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	}
	else
	{
		// 카카오톡 게임 친구 목록 조회 실패
	}
});

카카오톡 게임 메시지 보내기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_send_game_message
nopaneltrue

...

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

// friends API를 통해 가져온 친구 객체
KakaoGame::Data::KGTKakaoProfile kakaoProfile;

// [TODO] 템플릿 Id 설정
std::wstring templateId = TEXT("");

// [TODO] 메시지 템플릿에 설정한 인자 설정
std::map<std::wstring, std::wstring> arguments;
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("${nickname}"), kakaoProfile.nickname));
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("rog_link"), TEXT("test=100&hello=20111")));
arguments.insert(std::pair<std::wstring, std::wstring>(TEXT("bruce2"), kTEXT("test=100&hello=20111")));

KakaoGame::API::KGTKakaoTalk kakaotalkApi;

// 카카오톡 게임 메시지 보내기
kakaotalkApi.sendGameMessage(kakaoProfile, templateId, arguments, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 카카오톡 채팅 메시지 보내기 성공
	}
	else if (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
	{
		// 받은이가 메시지 수신 거부를 설정한 경우
	}
	else if (KakaoGame::Data::KGTResult::ExceedDailyUsage == result.code)
	{
		// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
	}
	else if (KakaoGame::Data::KGTResult::ExceedMonthlyUsage == result.code)
	{
		// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
	}
	else
	{
		// 카카오톡 채팅 메시지 보내기 실패
	}
});

카카오톡 채널 추가하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_add_plus_friend
nopaneltrue

...