...
Initialization and Status Change Event Processing
...
SDK Initialization
발췌문 삽입 |
---|
| EN_Initialization and Status Change Event Processing SDK ExampleEN_ |
---|
| Initialization and Status Change Event Processing SDK Example |
---|
name | application_init_sdk |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
std::map<std::wstring, std::wstring> kakaoSetting, facebookSetting, googleSetting;
kakaoSetting.insert(std::pair<std::wstring, std::wstring>(TEXT("jsKey"), TEXT("acd84e5c92067a159573483d8877de67")));
facebookSetting.insert(std::pair<std::wstring, std::wstring>(TEXT("clientId"), TEXT("1421382574931990")));
googleSetting.insert(std::pair<std::wstring, std::wstring>(TEXT("clientId"), TEXT("1002041625464-s2ruvcn1auv3rksr799gb4matvtvppb5.apps.googleusercontent.com")));
googleSetting.insert(std::pair<std::wstring, std::wstring>(TEXT("clientSecret"), TEXT("5MtQUUZ1sHl7RYgrhee-7-22")));
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));
idpSettings.insert(std::pair<KakaoGame::Data::KGTIdpCode, std::map<std::wstring, std::wstring>>(KakaoGame::Data::KGTIdpCode::Facebook, facebookSetting));
idpSettings.insert(std::pair<KakaoGame::Data::KGTIdpCode, std::map<std::wstring, std::wstring>>(KakaoGame::Data::KGTIdpCode::Google, googleSetting));
/**
* For using a single app
*/
KakaoGame::Data::KGTConfig config;
config.setAppInfo(
TEXT("909428"), // appID
TEXT("c3c38bbfa3828b342d946e9770c974d0"), // appSecret
TEXT("1.0.0"), // appVersion
TEXT("gameWeb"), // market
TEXT("14"), // ageRating
KakaoGame::Data::KGTServerType::QA, // server type
KakaoGame::Data::KGTLogLevel::Error, // log level
idpSettings // idpSettings
);
/**
* For using an app group
*/
std::map<std::wstring, std::wstring> apps;
apps.insert(std::pair<std::wstring, std::wstring>(TEXT("909428"), TEXT("c3c38bbfa3828b342d946e9770c974d0")));
apps.insert(std::pair<std::wstring, std::wstring>(TEXT("921478"), TEXT("5891c32124ca35821890a0bc1cec77a5")));
apps.insert(std::pair<std::wstring, std::wstring>(TEXT("921482"), TEXT("43d0abf4ba4025994068607c545f04dc")));
apps.insert(std::pair<std::wstring, std::wstring>(TEXT("947947"), TEXT("3c7fde7309a1fad65961110e8e290e28")));
apps.insert(std::pair<std::wstring, std::wstring>(TEXT("947950"), TEXT("7cc67cba7e3406585543d493f1548473")));
config.setAppGroupInfos(
TEXT("tubeAppGroup"), // appGroupId
apps, // app info map
TEXT("1.0.0"), // appVersion
TEXT("gameWeb"), // market
TEXT("14"), // ageRating
KakaoGame::Data::KGTServerType::QA, // server type
KakaoGame::Data::KGTLogLevel::Error, // log level
idpSettings // idpSettings
);
KakaoGame::API::KGTApplication applicationApi;
applicationApi.initSDK(config); |
Start
발췌문 삽입 |
---|
| EN_Initialization and Status Change Event Processing SDK ExampleEN_ |
---|
| Initialization and Status Change Event Processing SDK Example |
---|
name | application_start |
---|
nopanel | true |
---|
|
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTApplication applicationApi;
applicationApi.start(GetSafeHwnd(), result);
if (result.isSuccess())
{
// If the start is successful
// Check if auto-login is enabled
KakaoGame::API::KGTPlayer playerApi;
boolean isLoggedIn = playerApi.isLoggedIn();
if (isLoggedIn)
{
// The current Player's ID issued by the platform
KakaoGame::Data::KGTPlayer player;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // The current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Move to the game screen
}
else
{
// [TODO] If auto-login is not enabled, move to the login screen
}
}
else
{
// If the start fails - Ifsince initialization failsfailed, you should either retry the start or close the app.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
{
// [TODO] If a network error occurs, notify the user ofthat the networkstart issuefailed anddue theto failurea tonetwork start,issue thenand retry.
} else
{
// [TODO] If other errors occur, notifyprovide thean usererror ofnotification the error and request a retry of the start process. - If the issue persists, check the error code and logs to determine the cause.
}
} |
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTApplication applicationApi;
applicationApi.start(GetSafeHwnd(), [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// If the start is successful
// Check if auto-login is enabled
KakaoGame::API::KGTPlayer playerApi;
bool isLoggedIn = playerApi.isLoggedIn();
if (isLoggedIn)
{
// Get the current Player ID issued by the platform
KakaoGame::Data::KGTPlayer player;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // The current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Move to the game screen
}
else
{
// [TODO] If auto-login is not enabled, move to the login screen
}
}
else
{
// If the start fails - Sincesince initialization failed, retry the start or close the app.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
{
// [TODO] If a network error occurs, informnotify the user that the start failed due to a network issuesissue and retry.
}
else
{
// [TODO] ForIf other errors occur, notifyprovide thean usererror ofnotification the error and request a retry of the start process. - If the issue persists, check the error code and logs to identifydetermine the cause.
}
}
}); |
Setting Up Auto Login
...
Logging In Without Using the Default Login UI
...
Synchronous Example
...
in a Windows Environment
This feature is supported in the Windows environment.
If you do not use the default login UI provided by the SDK and instead implement your own login UI, the SDK offers a feature to set up auto login.
If you do not configure auto login, the SDK will not create a file for automatic login by default.
The file for auto login is created and stored in an encrypted format in the folder ".kakaogames" under the name ".access". This is because multiple users can exist on a single PC."
When a game is uninstalled and then reinstalled, if the auto login file remains, the SDK checks whether an encrypted ".access" file exists in the location of the Windows SDK file (KakaoGame.dll). If the file is valid, the SDK loads the file containing the auto login information and performs the auto login.
If the auto login files are corrupted, the SDK will delete them.
If the auto login file exists and the user logs out or withdraws, the auto login file will be deleted.
코드 블럭 |
---|
|
nclude "KakaoGameLib.h"
// Set whether to use auto-login; if not set, it defaults to not using auto-login
// When auto-login is enabled and login is successful, auto-login information is generated
// If auto-login information exists, auto-login will proceed automatically during the next KGTApplication start, so to remove the auto-login information, you need to log out
bool useAutoLogin = true;
KakaoGame::API::KGTApplication applicationApi;
applicationApi.setUseAutoLogin(useAutoLogin); |
Login
...
발췌문 삽입 |
---|
| Login SDK Example |
---|
| Login SDK Example |
---|
name | login |
---|
nopanel | true |
---|
|
Logging In Without Using the Default Login UI
발췌문 삽입 |
---|
| Login SDK Example |
---|
| Login SDK Example |
---|
name | login_custom |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Setting the idpCode for login
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.login(GetSafeHwnd(), idpCode, result);
if (result.isSuccess())
{
// IDP login and platform login successful
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // Current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Since the login was successful, proceed to the game screen.
}
else
{
// IDP login or platform login failed
// [TODO] If login fails, inform the user and prompt them to retry.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
{
// [TODO] If a network error occurs, notify the user that the start failed due to a network issue and retry.
}
else if (KakaoGame::Data::KGTResultCode::Forbidden == result.code)
{
// [TODO] During the CBT period, authentication may not be possible for users who are not allowed. Provide an appropriate notification to the user.
}
else if (KakaoGame::Data::KGTResultCode::UserCanceled == result.code)
{
// [TODO] Since the user canceled during the login process, the login screen should be maintained.
}
else
{
// [TODO] If other errors occur, provide an error notification and request a retry of the start process. - If the issue persists, check the error code and logs to determine the cause.
}
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Set the idpCode you want to log in with
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KakaoGame::API::KGTPlayer playerApi;
playerApi.login(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// Successfully logged in with IDP and platform
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // The current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Since the login was successful, proceed to the game screen.
}
else
{
// IDP login or platform login failed
// [TODO] If login fails, inform the user and prompt them to retry.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
{
// [TODO] If a network error occurs, notify the user that the start failed due to a network issue and retry.
}
else if (KakaoGame::Data::KGTResultCode::Forbidden == result.code)
{
// [TODO] If the user is not allowed during the CBT period, authentication may not be possible. Provide a notification message to the user.
}
else if (KakaoGame::Data::KGTResultCode::UserCanceled == result.code)
{
// [TODO] Since the user canceled during the login process, the login screen should be maintained.
}
else
{
// [TODO] If other errors occur, provide an error notification and request a retry of the start process. - If the issue persists, check the error code and logs to determine the cause.
}
}
}); |
Logging in Using a Square Token
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// User ID requesting login
std::wstring playerId;
// Token received from Square
std::wstring squareToken;
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.loginIdpWithSquareToken(GetSafeHwnd(), playerId, squareToken, result);
if (result.isSuccess())
{
// Successful IDP and platform login
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // Current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Since login was successful, proceed to the game screen.
}
else
{
// IDP or platform login failed
// [TODO] If login fails, notify the user and request a retry.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
{
// [TODO] If a network error occurs, notify the user that the start failed due to a network issue and retry.
}
else
{
// [TODO] If other errors occur, provide an error notification and request a retry of the start process. - If the issue persists, check the error code and logs to determine the cause.
}
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// User ID requesting login
std::wstring playerId;
// Token received from Square
std::wstring squareToken;
KakaoGame::API::KGTPlayer playerApi;
playerApi.login(GetSafeHwnd(), playerId, squareToken, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// IDP login and platform login successful
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // The current Player's ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Since login was successful, proceed to the game screen.
}
else
{
// IDP login or platform login failed
// [TODO] If login fails, notify the user and request a retry.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
{
// [TODO] If a network error occurs, notify the user that the start failed due to a network issue and retry..
}
else
{
// [TODO] If other errors occur, provide an error notification and request a retry of the start process. - If the issue persists, check the error code and logs to determine the cause.
}
}
}); |
Logout
...
발췌문 삽입 |
---|
| Logout SDK Example |
---|
| Logout SDK Example |
---|
name | logout |
---|
nopanel | true |
---|
|
Logging Out Without Using the Default Logout UI
발췌문 삽입 |
---|
| Logout SDK Example |
---|
| Logout SDK Example |
---|
name | logout_custom |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
//
Setting
the idpCode for login
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.loginlogout(GetSafeHwnd(), idpCodefalse, result);
if (result.isSuccess())
{
// IDP login and platform login Logout successful
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // Current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Since login is successful, proceed to the game screen.
}
else
{
// IDP login or platform login failed
// [TODO] Return to the start screen
}
else
{
// Logout failed
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// Logout successful
// [TODO] InReturn to casethe ofstart loginscreen
failure, notify the user and retry.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| }
else
{
// Logout failed
}
}); |
Unregistration
...
발췌문 삽입 |
---|
| Unregistration SDK Example |
---|
| Unregistration SDK Example |
---|
name | unregister |
---|
nopanel | true |
---|
|
Unregistering Without Using the Default Unregistration UI
발췌문 삽입 |
---|
| Unregistration SDK Example |
---|
| Unregistration SDK Example |
---|
name | unregister_custom |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
||KGTResult result;
KakaoGame::DataAPI::KGTResultCode::ConnectionFailed == result.code)
{
// [TODO] If a network error occurs, notify the user of the network issue and retry.
}
else if (KakaoGame::Data::KGTResultCode::Forbidden == result.code)
{
KGTPlayer playerApi;
playerApi.unregister(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// Unregistration successful
// [TODO] During the CBT period, authentication may not be possible for users who are not permitted. Notify the user accordingly.
}
else if (KakaoGame::Data::KGTResultCode::UserCanceled == result.code)
{
// [TODO] If the user cancels during the login process, maintain the login screen.
}
elseReturn to the start screen
}
else
{
// Unregistration failed
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.unregister(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// [TODO] In case of other errors, notify the user and retry the login process. - Check error codes and logs to identify the cause.
}
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Set the idpCode you want to log in with
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KakaoGame::API::KGTPlayer playerApi;
playerApi.login(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// Successfully logged in with IDP and platform
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // The current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Move to the game screen after successful login.
}
else
{
// IDP login or platform login failed
// [TODO] After notifying the user of the login failure, retry the login.
if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| Unregistration successful
// [TODO] Return to the start screen
}
else
{
// Unregistration failed
}
}); |
Account Linking
...
발췌문 삽입 |
---|
| Account Linking SDK Example |
---|
| Account Linking SDK Example |
---|
name | connect |
---|
nopanel | true |
---|
|
Linking Accounts Without Using the Default Account Linking UI
발췌문 삽입 |
---|
| Account Linking SDK Example |
---|
| Account Linking SDK Example |
---|
name | connect_custom |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Set the idpCode to connect to
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 connection successful
// Player ID is not changed.
}
else
{
// IDP connection failed
if (KakaoGame::Data::KGTResultCode::ConnectionFailedInvalidParameter == result.code)
{
// [TODO]An Ininvalid case of a network error, notify the user of the network issue that caused the start to fail, and retry.
parameter was passed
}
else if (KakaoGame::Data::KGTResultCode::ForbiddenNotAuthorized == result.code)
{
// [TODO] If the The user is not allowedcurrently during the CBT period, authentication may not be possible. Provide a notification message to the user.
logged in
}
else if (KakaoGame::Data::KGTResultCode::UserCanceledInvalidState == result.code)
{
// [TODO] If the user cancels during the login process, keep the login screen.
}
else
{
// The [TODO]current Forauthenticated otherIDP errors,is providenot an errorIDP notificationthat andcan promptbe thelinked user to retry login. - After checking the error code and logs, identify the cause.account
}
}
}); |
Logging in Using a Square Token
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// User ID requesting login
std::wstring playerId;
// Token received from Square
std::wstring squareToken;
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.loginIdpWithSquareToken(GetSafeHwnd(), playerId, squareToken, result);
if (result.isSuccess())
{
// Successful IDP and platform login
KakaoGame::Data::KGTPlayer player;
else if (KakaoGame::Data::KGTResultCode::AlreadyUsedIDPAccount == result.code)
{
// The account is already linked to another IDP
}
else
{
// Other errors occurred
}
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Set the idpCode to connect to
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayerconnect(GetSafeHwnd(player);,
std::wstring playerId = player.playerId; // Current Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Move to the game screen as the login is successful.
}
else
{
idpCode, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// IDP connection successful
// Player ID is not changed.
}
else
{
// IDP or platformconnection login failed
// [TODO] If login fails, notify the user and request a retry.
if (KakaoGame::Data::KGTResultCode::NetworkFailureInvalidParameter == result.code)
|| {
// An invalid parameter was passed
}
else if (KakaoGame::Data::KGTResultCode::ServerTimeoutNotAuthorized == result.code)
{
|| // The user is not currently logged in
}
else if (KakaoGame::Data::KGTResultCode::ConnectionFailedInvalidState == result.code)
{
// [TODO] If a network error occurs, inform the user of the network issue and request a retry.
}
else
The current authenticated IDP is not an IDP that can be linked to the account
}
else if (KakaoGame::Data::KGTResultCode::AlreadyUsedIDPAccount == result.code)
{
// The account is already linked to another IDP
}
else
{
// [TODO] If otherOther errors occur, inform the user and request a retry. - Check the error code and logs to identify the cause if the problem persists.
}
} |
Asynchronous Example
Profile
...
Retrieve My Information
발췌문 삽입 |
---|
| Profile SDK Example |
---|
| Profile SDK Example |
---|
name | player_currentPlayer |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// 로그인을 요청하는 사용자 아이디
std::wstring playerId;
// 스퀘어에서 전달받은 토큰
std::wstring squareToken;
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logingetCurrentPlayer(GetSafeHwnd(), playerId, squareToken, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// IDP 로그인과 플랫폼 로그인 성공
player); |
Retrieve My IDP Information
발췌문 삽입 |
---|
| Profile SDK Example |
---|
| Profile SDK Example |
---|
name | player_idpProfile |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
player.kakaoProfile; |
System Information
...
Retrieve Language Code
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_language_code |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring accessTokenlanguageCode = playerApisystemApi.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를 사용하지 않는 로그아웃하기
...
Retrieve Language Tag
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_language_tag |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring languageCode = systemApi.getLanguageTag(); |
Retrieve Country Code
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_country_code |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring countryCode = systemApi.getCountryCode(); |
Retrieve IP-based Country Code
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_geo_country_code |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring countryCode = systemApi.getGeoCountryCode(); |
Retrieve Device ID
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_device_id |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring deviceId = systemApi.getDeviceId(); |
Retrieve Device Model
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_device_model |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring deviceModel = systemApi.getDeviceModel(); |
Retrieve OS Name
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_os_name |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring osName = systemApi.getOSName(); |
Retrieve Network Connection Status
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_is_network_connected |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayerKGTSystem playerApisystemApi;
playerApi.logout(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
} |
...
boolean networkConnected = systemApi.isNetworkConnected(); |
Retrieve Connected Network Type
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_network_type |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring networkType = systemApi.getNetworkType(); |
Get the Set Game Language Code
Returns the set game language code.
If no language code is set, it retrieves the language setting information configured on the device, and the language code is returned according to the ISO 639-1 standard.
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayerKGTSystem playerApisystemApi;
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
}
}); |
탈퇴
...
기본 탈퇴 UI를 사용하지 않는 탈퇴하기
...
Synchronous Example
std::wstring gameLanguageCode = systemApi.getGameLanguageCode(); |
Set the Game Language Code
Configures the game to use the language synchronized with the platform.
The following language codes are supported:
(Can be set before calling the Start API)
device: Device setting value. Can be used to revert to the device's setting value. (default)
en: English
ko: Korean
ja: Japanese
zh_hant: Chinese (Traditional)
zh_hans: Chinese (Simplified)
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// KakaoGame::Data::KGTResult result;KGTLanguageCode languageCode = KakaoGame::API::KGTPlayer playerApi;
playerApi.unregister(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// 탈퇴 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 탈퇴 실패
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.unregister(GetSafeHwnd(), false, [this](Data::KGTLanguageCode::en; // English
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::ko; // Korean
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::ja; // Japanese
// KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 탈퇴 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 탈퇴 실패
}
}); |
계정 연결
...
기본 계정 연결 UI를 사용하지 않는 계정 연결하기
...
KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::zh_hant; // Chinese(Traditional)
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::zh_hans; // Chinese (Simplified)
KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::device; // Device setting value
KakaoGame::API::KGTSystem systemApi;
systemApi.setGameLanguageCode(languageCode); |
Kakao Integration Feature
...
Setting Up KakaoTalk Game Message Reception
발췌문 삽입 |
---|
| Kakao Integration Feature SDK Example |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talk_show_setting |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// 연결하고자 하는
idpCode
셋팅
KakaoGame::Data::KGTIdpCode idpCode =KGTResult result;
bool isAlloweMe;
KakaoGame::DataAPI::KGTIdpCode::Kakao;
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.connectKGTKakaoTalk kakaotalkApi;
// Display the view to set KakaoTalk game message reception preferences
kakaotalkApi.showSetting(GetSafeHwnd(), idpCoderesult, resultisAlloweMe);
if (result.isSuccess())
{
// IDP 연결 성공
Successfully set the KakaoTalk game message reception settings
isAlloweMe; // PlayerWhether IDmessage 는reception 변경되지is 않습니다.allowed }as elseper {the //settings
IDP}
연결 실패else if (KakaoGame::Data::KGTResultCodeKGTResult::InvalidParameterNotKakaoTalkUser == 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 The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// Failed to set the KakaoTalk game message reception settings
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Display the view to set KakaoTalk game message reception preferences
kakaotalkApi.showSetting(GetSafeHwnd(), [this](KakaoGame::Data::KGTResult result, bool isAlloweMe) {
if (result.isSuccess())
{
// 이미Successfully 연결되어set 있는the 계정이KakaoTalk 있는game 경우message }reception elsesettings
{
// 기타 에러 발생
}
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
isAlloweMe; // 연결하고자Whether 하는message idpCodereception 셋팅
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KakaoGame::API::KGTPlayer playerApi;
playerApi.connect(GetSafeHwnd(), idpCode, [this]is allowed as per the settings
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
if (result.isSuccess())
{
// IDP 연결 성공
// Player ID 는 변경되지 않습니다 // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// IDP 연결 실패
if ( Failed to set the KakaoTalk game message reception settings
}
}); |
Retrieve KakaoTalk Profile
발췌문 삽입 |
---|
| Kakao Integration Feature SDK Example |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talk_talk_profile |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResultCode::InvalidParameter==KGTResult result.code)
{
// 잘못된 인자가 전달 된 경우
}
else if (;
KakaoGame::Data::KGTResultCodeKGTKakaoTalkProfile profile;
KakaoGame::API::NotAuthorized== result.code)
{
KGTKakaoTalk kakaotalkApi;
// 현재Retrieve 로그인이KakaoTalk 안되어 있는 경우
}
else if (KakaoGame::Data::KGTResultCode::InvalidState== result.code)
{
// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
}
profile
kakaotalkApi.talkProfile(result, profile);
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk profile
profile; // KakaoTalk profile information of the logged-in user
}
else if (KakaoGame::Data::KGTResultCodeKGTResult::AlreadyUsedIDPAccountNotKakaoTalkUser == result.code)
{
// 이미 연결되어 있는 계정이 있는 경우
}
else
{
// 기타 에러 발생
}
}
}); |
프로필
내 정보 조회하기
...
The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// Failed to retrieve KakaoTalk profile
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer
player;
KakaoGame::API::KGTPlayerKGTKakaoTalk playerApi;
playerApi.getCurrentPlayer(player); |
내 IDP 정보 조회하기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
kakaotalkApi;
// Retrieve KakaoTalk profile
kakaotalkApi.talkProfile([this](KakaoGame::Data::KGTPlayerKGTResult player;result, KakaoGame::APIData::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(); |
국가 코드 가져오기
...
KGTKakaoTalkProfile profile) {
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk profile
profile; // KakaoTalk profile information of the logged-in user
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// Failed to retrieve KakaoTalk profile
}
}); |
Retrieve KakaoTalk Game Friend List
발췌문 삽입 |
---|
| Kakao Integration Feature SDK Example |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talk_friends |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::APIData::KGTSystemKGTResult systemApiresult;
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(); |
기기 모델 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring deviceModel = systemApi.getDeviceModel(); |
OS 이름 가져오기
...
std::vector<KakaoGame::Data::KGTPlayer> players;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Retrieve the list of game friends
kakaotalkApi.friends(result, players);
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk game friends list.
// Game friends list
for each (auto player in players)
{
}
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// Failed to retrieve KakaoTalk profile
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystemKGTKakaoTalk systemApikakaotalkApi;
std::wstring osName = systemApi.getOSName(); |
네트워크 연결 여부 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
boolean networkConnected = systemApi.isNetworkConnected(); |
연결된 네트워크 타입 가져오기
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring networkType = systemApi.getNetworkType(); |
설정된 게임 언어 코드 가져오기
설정된 게임 언어 코드를 반환한다.
설정된 언어 코드가 없는 경우 기기에 설정되어 있는 언어 설정 정보를 가져오며, 언어 코드는 ISO 639-1 표준에 따른 값을 반환한다.
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring gameLanguageCode = systemApi.getGameLanguageCode(); |
게임 언어 코드 설정하기
게임에서 사용하는 언어를 플랫폼에서 동기화 해서 사용하도록 설정한다.
아래와 같은 언어 코드를 지원한다.
(Start API 호출 이전에 설정 가능)
device: 디바이스 설정 값. 디바이스 설정 값으로 되돌릴 때 사용할 수 있음. (default)
en: 영어
ko: 한국어
ja: 일어
zh_hant: 중국어 (번체)
zh_hans: 중국어 (간체)
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::en; // 영어
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::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; // 디바이스 설정 값
KakaoGame::API::KGTSystem systemApi;
systemApi.setGameLanguageCode(languageCode); |
카카오 연동 기능
카카오톡 게임 메시지 수신 여부 설정하기
...
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
bool isAlloweMe;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기
kakaotalkApi.showSetting(GetSafeHwnd(), result, isAlloweMe);
if (result.isSuccess())
{
// 카카오톡 게임 메시지 수신 여부 설정 성공
isAlloweMe; // 설정된 메시지 수신 허용 여부// Retrieve the list of game friends
kakaotalkApi.friends([this](KakaoGame::Data::KGTResult result, std::vector<KakaoGame::Data::KGTPlayer> players) {
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk game friends list.
// Game friends list
for each (auto player in players)
{
}
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// Failed to retrieve KakaoTalk game friends list
}
}); |
Sending KakaoTalk Game Messages
발췌문 삽입 |
---|
| Kakao Integration Feature SDK Example |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talk_send_game_message |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Friend object retrieved via the friends API
KakaoGame::Data::KGTKakaoProfile kakaoProfile;
// [TODO] Set the template Id
std::wstring templateId = TEXT("");
// [TODO] Set the parameters for the message template
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::Data::KGTResult result;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Send a KakaoTalk game message
kakaotalkApi.sendGameMessage(kakaoProfile, templateId, arguments, result);
if (result.isSuccess())
{
// Successfully sent KakaoTalk chat message
}
else if (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
{
// The recipient has set message reception to be disabled.
}
else if (KakaoGame::Data::KGTResult::ExceedDailyUsage == result.code)
{
// Occurs when the daily quota for sending messages to a specific app (regardless of the recipient) is exceeded.
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUserExceedMonthlyUsage == result.code)
{
// 로그인Occurs 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
}
else
{
// 카카오톡 게임 메시지 수신 여부 설정 실패
} |
Asynchronous Example
코드 블럭 |
---|
|
#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
{
// 카카오톡 게임 메시지 수신 여부 설정 실패
}
}); |
카카오톡 프로필 조회하기
...
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::Data::KGTKakaoTalkProfile profile;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// 카카오톡 프로필 조회하기
kakaotalkApi.talkProfile(result, profile);
when the monthly quota for sending messages to a specific person for a specific app is exceeded.
}
else
{
// Failed to send KakaoTalk chat message
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Friend object retrieved via the friends API
KakaoGame::Data::KGTKakaoProfile kakaoProfile;
// [TODO] Set the template Id
std::wstring templateId = TEXT("");
// [TODO] Set the parameters for the message template
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;
// Send a KakaoTalk game message
kakaotalkApi.sendGameMessage(kakaoProfile, templateId, arguments, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 카카오톡 프로필 조회 성공
profile; // 로그인한Successfully 유저의sent 카카오톡KakaoTalk 프로필chat 정보message
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUserMessageSettingDisabled == result.code)
{
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
}
else
{
result.code)
{
// 카카오톡The 프로필recipient 조회has 실패
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// 카카오톡 프로필 조회하기
kakaotalkApi.talkProfile([this](set message reception to be disabled.
}
else if (KakaoGame::Data::KGTResult result, KakaoGame::Data::KGTKakaoTalkProfile profileExceedDailyUsage == result.code)
{
if (result.isSuccess())
{
// 카카오톡 프로필 조회 성공
profile; // 로그인한 유저의 카카오톡 프로필 정보 // Occurs when the daily quota for sending messages to a specific app (regardless of the recipient) is exceeded.
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUserExceedMonthlyUsage == result.code)
{
// Occurs when 로그인the 한monthly 유저가quota '카카오톡'for 유저가sending 아닙니다.messages 카카오to 스토리만a 가입한specific 유저의person 계정과for 같이a 카카오톡specific 유저가app 아닌is 경우exceeded.
}
else
{
// Failed 카카오톡to send 프로필KakaoTalk 조회chat 실패message
}
}); |
...
Adding a KakaoTalk Channel
발췌문 삽입 |
---|
| EN_Kakao Integration Feature SDK ExampleEN_ |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talk_add_plus_friendsfriend |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// [TODO] Set the channel Id
int channelId = 0;
KakaoGame::Data::KGTResult result;
std::vector<KakaoGame::Data::KGTPlayer> players;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
//
게임 친구 목록 조회하기
kakaotalkApi.friendsaddChannel(resultchannelId, playersresult);
if
(result.isSuccess())
{
// 카카오톡 게임 친구 목록 조회 성공.
// 게임 친구 목록
for each (auto player in players)
{
}
if (result.isSuccess())
{
// Successfully added the channel
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// 카카오톡Failed to 프로필add 조회the 실패channel
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h" |
---|
|
#include "KakaoGameLib.h"
// [TODO] Set the channel Id
int channelId = 0;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// 게임 친구 목록 조회하기
kakaotalkApi.friendsaddChannel(channelId, [this](KakaoGame::Data::KGTResult result, std::vector<KakaoGame::Data::KGTPlayer> players) {
if (result.isSuccess())
{
// 카카오톡Successfully 게임added 친구the 목록 조회 성공.
// 게임 친구 목록
for each (auto player in players)
{
}
channel
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우 The logged-in user is not a 'KakaoTalk' user. This occurs when the user is only registered with KakaoStory and not KakaoTalk.
}
else
{
// 카카오톡Failed 게임to 친구add 목록the 조회channel
실패
}
}); |
...
Retrieve the list of friends to whom I sent an invite message
발췌문 삽입 |
---|
| EN_Kakao Integration Feature SDK ExampleEN_ |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talk_send_game_messageinvitation_joiners |
---|
nopanel | true |
---|
|
Synchronous Example
...
...
Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// [TODO] Set 템플릿the Idevent 설정
std::wstring templateIdID
int32 eventId = 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")));
0;
KakaoGame::Data::KGTResult result;
std::vector<KakaoGame::Data::KGTPlayer> players;
KakaoGame::API::KGTKakaoInvitation kakaoInvitationApi;
// Retrieve the list of players I invited
kakaoInvitationApi.joiners(eventId, result, players);
if (result.isSuccess())
{
// Successfully retrieved the list of players I invited
for (KakaoGame::Data::KGTResultKGTPlayer result;player KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// 카카오톡 게임 메시지 보내기
kakaotalkApi.sendGameMessage(kakaoProfile, templateId, arguments, result);
if (result.isSuccess())
{
// 카카오톡 채팅 메시지 보내기 성공
}
else if (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
{
// 받은이가 메시지 수신 거부를 설정한 경우
}
else if (KakaoGame::Data::KGTResult::ExceedDailyUsage == result.code)
{
// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생: players)
{
// Recipient's player ID
player.playerId;
// Recipient's nickname
player.kakaoProfile.nickname;
// Recipient's profile thumbnail image
player.kakaoProfile.thumbnailImageUrl;
// Check if the recipient has a withdrawal history. Use this flag to display withdrawal information in the UI.
player.kakaoProfile.isUnregistered;
}
}
else if (KakaoGame::Data::KGTResult::ExceedMonthlyUsageNotKakaoTalkUser == result.code)
{
// 한명이The 특정logged-in 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
}
else
{
// 카카오톡 채팅 메시지 보내기 실패
} |
Asynchronous Example
코드 블럭 |
---|
|
#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, argumentsuser is not a 'KakaoTalk' user. (For cases where the user is not a KakaoTalk user)
}
else
{
// Failed to retrieve the list
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// [TODO] Set the event ID
int32 eventId = 0;
KakaoGame::API::KGTKakaoInvitation kakaoInvitationApi;
// Retrieve the list of players I invited
kakaoInvitationApi.joiners(eventId, [this](KakaoGame::Data::KGTResult result, int32_t totalReceiversCount, int32_t joinersCount) {
if (result.isSuccess())
{
// 카카오톡 채팅 메시지 보내기 성공
}
else if Successfully retrieved the list of players I invited
for (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
{
KGTPlayer player : players)
{
// Recipient's player ID
player.playerId;
// 받은이가 메시지 수신 거부를 설정한 경우
}
else if (KakaoGame::Data::KGTResult::ExceedDailyUsage == result.code)
{
// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생Recipient's nickname
player.kakaoProfile.nickname;
// Recipient's profile thumbnail image
player.kakaoProfile.thumbnailImageUrl;
// Check if the recipient has a withdrawal history. Use this flag to display withdrawal information in the UI.
player.kakaoProfile.isUnregistered;
}
}
else if (KakaoGame::Data::KGTResult::ExceedMonthlyUsageNotKakaoTalkUser == result.code)
{
// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생The logged-in user is not a 'KakaoTalk' user. (For cases where the user is not a KakaoTalk user)
}
else
{
// 카카오톡Failed 채팅to 메시지retrieve 보내기the 실패list
}
}); |
...
Retrieve the count of friends to whom I sent an invite message
발췌문 삽입 |
---|
| EN_Kakao Integration Feature SDK ExampleEN_ |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talkinvitation_addreceivers_plus_friendcount |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// [TODO] Set 채널the Idevent 설정ID
intint32 channelIdeventId = 0;
KakaoGame::Data::KGTResult result;
int32 totalReceiversCount;
int32 joinersCount;
KakaoGame::API::KGTKakaoTalkKGTKakaoInvitation kakaotalkApi;
kakaotalkApi.addChannel(channelId, resultkakaoInvitationApi;
// Retrieve the count of players I invited
kakaoInvitationApi.receiversCount(eventId, result, totalReceiversCount, joinersCount);
if (result.isSuccess())
{
// 채널 추가 성공())
{
// Successfully retrieved the counts
// totalReceiversCount - Total number of friends
// joinersCount - Number of friends who joined the game
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.The logged-in user is not a 'KakaoTalk' user. (For cases where the user is not a KakaoTalk user)
}
else
{
// Failed to 채널retrieve 추가the 실패counts
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// [TODO] 채널Set the Idevent 설정ID
intint32 channelIdeventId = 0;
KakaoGame::API::KGTKakaoTalkKGTKakaoInvitation kakaotalkApi;
kakaotalkApi.addChannel(channelIdkakaoInvitationApi;
// Retrieve the count of players I invited
kakaoInvitationApi.receiversCount(eventId, [this](KakaoGame::Data::KGTResult result, int32_t totalReceiversCount, int32_t joinersCount) {
if (result.isSuccess())
{
// 채널 추가 성공 Successfully retrieved the counts
// totalReceiversCount - Total number of friends
// joinersCount - Number of friends who joined the game
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. The logged-in user is not a 'KakaoTalk' user. (For cases where the user is not a KakaoTalk user)
}
else
{
// 채널 추가 실패Failed to retrieve the counts
}
}); |