...
코드 블럭 |
---|
|
#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 예제 |
---|
name | logout |
---|
nopanel | true |
---|
|
기본 로그아웃 UI를 사용하지 않는 로그아웃하기
발췌문 삽입 |
---|
| 로그아웃 SDK 예제 |
---|
| 로그아웃 SDK 예제 |
---|
name | logout_custom |
---|
nopanel | true |
---|
|
동기식 예제
코드 블럭 |
---|
|
#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
{
// 로그아웃 실패
} |
비동기식 예제
코드 블럭 |
---|
|
#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를 사용하지 않는 탈퇴하는 예제입니다.
동기식 예제
코드 블럭 |
---|
|
#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] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
}탈퇴 실패
} |
비동기식 예제
코드 블럭 |
---|
|
#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를 사용하지 않는 로그아웃하기
...
동기식 예제
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
} |
비동기식 예제
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
}
}); |
탈퇴
계정 연결
...
기본 계정 연결 UI를 사용하지 않는 계정 연결하기
...
동기식 예제
코드 블럭 |
---|
|
#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
{
// 기타 에러 발생
}
} |
비동기식 예제
코드 블럭 |
---|
|
#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
{
// 기타 에러 발생
}
}
}); |
프로필
내 정보 조회하기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player); |
내 IDP 정보 조회하기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
player.kakaoProfile; |
시스템 정보
언어 코드 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring languageCode = systemApi.getLanguageCode(); |
언어 태그 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring languageCode = systemApi.getLanguageTag(); |
국가 코드 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring countryCode = systemApi.getCountryCode(); |
IP 기반 국가 코드 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring countryCode = systemApi.getGeoCountryCode(); |
기기 아이디 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring deviceId = systemApi.getDeviceId(); |
기기 모델 가져오기
...
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 탈퇴 실패
}
}); |
프로필
내 정보 조회하기
발췌문 삽입 |
---|
| 프로필 SDK 예제 |
---|
| 프로필 SDK 예제 |
---|
name | player_currentPlayer |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player); |
내 IDP 정보 조회하기
발췌문 삽입 |
---|
| 프로필 SDK 예제 |
---|
| 프로필 SDK 예제 |
---|
name | player_idpProfile |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::APIData::KGTSystem systemApi;
std::wstring deviceModel = systemApi.getDeviceModel(); |
OS 이름 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KGTPlayer player;
KakaoGame::API::KGTSystem systemApi;
std::wstring osName = systemApi.getOSName(); |
...
KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
player.kakaoProfile; |
시스템 정보
...
언어 코드 가져오기
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_islanguage_network_connectedcode |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
boolean networkConnectedstd::wstring languageCode = systemApi.isNetworkConnectedgetLanguageCode(); |
...
언어 태그 가져오기
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_networklanguage_typetag |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring networkTypelanguageCode = systemApi.getNetworkTypegetLanguageTag(); |
...
국가 코드 가져오기
...
설정된 게임 언어 코드를 반환한다.
...
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_country_code |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring gameLanguageCodecountryCode = systemApi.getGameLanguageCodegetCountryCode(); |
게임 언어 코드 설정하기
게임에서 사용하는 언어를 플랫폼에서 동기화 해서 사용하도록 설정한다.
아래와 같은 언어 코드를 지원한다.
(Start API 호출 이전에 설정 가능)
...
device: 디바이스 설정 값. 디바이스 설정 값으로 되돌릴 때 사용할 수 있음. (default)
...
en: 영어
...
ko: 한국어
...
ja: 일어
...
zh_hant: 중국어 (번체)
...
IP 기반 국가 코드 가져오기
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_geo_country_code |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
//
KakaoGame::DataAPI::KGTLanguageCodeKGTSystem languageCodesystemApi;
=
KakaoGame::Data::KGTLanguageCode::en; // 영어
//std::wstring countryCode = systemApi.getGeoCountryCode(); |
기기 아이디 가져오기
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_device_id |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#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 예제 |
---|
name | system_device_model |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring deviceModel = systemApi.getDeviceModel(); |
OS 이름 가져오기
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_os_name |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring osName = systemApi.getOSName(); |
네트워크 연결 여부 가져오기
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_is_network_connected |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
boolean networkConnected = systemApi.isNetworkConnected(); |
연결된 네트워크 타입 가져오기
발췌문 삽입 |
---|
| 시스템 정보 SDK 예제 |
---|
| 시스템 정보 SDK 예제 |
---|
name | system_network_type |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring networkType = systemApi.setGameLanguageCodegetNetworkType(languageCode); |
카카오 연동 기능
...
카카오톡 게임 메시지 수신 여부 설정하기
...