...
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, notify the user ofthat the networkstart issuefailed anddue theto failurea tonetwork start,issue thenand retry.
}
else
{
// [TODO] If other errors occur, notifyprovide thean usererror of thenotification error and request a retry of the start process. - If the issue persists, check the error code and logs to determine the cause.
}
}
}); |
Setting Up Auto Login
...
Logging In Without Using the Default Login UI
...
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"
// SettingSet the idpCode for loginyou want to log in with
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.login(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result); {
if (result.isSuccess())
{
// Successfully logged in with IDP login and platform login successful
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
std::wstring playerId = player.playerId; // The Currentcurrent Player ID issued by the platform
std::wstring accessToken = playerApi.getAccessToken(); // Platform access token (AccessToken)
// [TODO] Since the login iswas successful, proceed to the game screen.
}
else
{
// IDP login or platform login failed
// [TODO] In case ofIf login failurefails, notifyinform 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 ofthat the networkstart issuefailed anddue theto failurea tonetwork start,issue thenand retry.
}
else if (KakaoGame::Data::KGTResultCode::Forbidden == result.code)
{
// [TODO] DuringIf the user is not allowed during the CBT period, authentication may not be possible. forProvide usersa whonotification are not permitted. Notifymessage to the user accordingly.
}
else if (KakaoGame::Data::KGTResultCode::UserCanceled == result.code)
{
// [TODO] IfSince the user cancelscanceled during the login process, maintain 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, notify the user of the error and request a retry of the start. - 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
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::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;
KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logingetCurrentPlayer(GetSafeHwnd(player),;
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)
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] Since login is successful, proceed to the game screen If a network error occurs, notify the user that the start failed due to a network issue and retry.
}
else
{
// IDP login or platform login failed
// [TODO] After notifying the user[TODO] If other errors occur, provide an error notification and request a retry of the login failure, retrystart process. - If the login.
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 of the network issue and the failure to start, then retry
}
else if 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::KGTResultCode::Forbidden == result.codeKGTResult result) {
if (result.isSuccess())
{
// [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)
{
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] IfSince thelogin userwas cancelssuccessful, during the login process, maintainproceed to the logingame screen.
}
else
{
// IDP login or platform login failed
// [TODO] If otherlogin errors occurfails, notify the user of the error and request a retry of the start.
- 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 is successful, proceed to the game screen. 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"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// Logout successful
// [TODO] Return to the start screen
}
else
{
// IDP or platform login failed
// [TODO] If login fails, notify the user and request a retry.
if Logout failed
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)KGTResult result) {
if (result.isSuccess())
{
// Logout successful
// [TODO] Return to the start screen
}
else
{
// [TODO]Logout Iffailed
a network error occurs, notify the user of the network issue and the failure to start, then retry
}
else
{
}
}); |
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::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.unregister(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// Unregistration successful
// [TODO] If other errors occur, notifyReturn to the user of the error and request a retry of the start. - If the issue persists, check the error code and logs to determine the cause.
}screen
}
else
{
// Unregistration failed
} |
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 is successful, proceed to the game screen.
}
else
{
// IDP login or platform login failed
// [TODO] If login fails, notify the user and request a retry.
KakaoGame::API::KGTPlayer playerApi;
playerApi.unregister(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 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::InvalidParameter == result.code)
{
// An invalid parameter was passed
}
else if (KakaoGame::Data::KGTResultCode::NetworkFailureNotAuthorized == result.code)
|| {
// The user is not currently logged in
}
else if (KakaoGame::Data::KGTResultCode::ServerTimeoutInvalidState == result.code)
|| {
// The current authenticated IDP is not an IDP that can be linked to the account
}
else if (KakaoGame::Data::KGTResultCode::ConnectionFailedAlreadyUsedIDPAccount == result.code)
{
// The account is already linked to another IDP
}
else
{
// [TODO] If a network error occurs, notify the user of the network issue and the failure to start, then retry.
}
else
{
// [TODO] If other errors occur, notify the user of the error and request a retry of the start. - If the issue persists, check the error code and logs to determine the cause.
}
}
}); |
Logout
...
Logging Out Without Using the Default Logout UI
...
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// Logout successful
// [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] Return to the start screen
}
else
{
// Logout failed
}
}); |
Unregistration
...
Unregistering Without Using the Default Unregistration UI
...
Synchronous Example
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.connect(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// IDP connection successful
// Player ID is not changed.
}
else
{
// IDP connection failed
if (KakaoGame::Data::KGTResultCode::InvalidParameter == result.code)
{
// An invalid parameter was passed
}
else if (KakaoGame::Data::KGTResultCode::NotAuthorized == result.code)
{
// The user is not currently logged in
}
else if (KakaoGame::Data::KGTResultCode::InvalidState == result.code)
{
// 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
{
// Other errors occurred
}
}
}); |
Profile
...
Retrieve My Information
발췌문 삽입 |
---|
| Profile SDK Example |
---|
| Profile SDK Example |
---|
name | player_currentPlayer |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(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);
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::DataAPI::KGTResultKGTSystem resultsystemApi;
KakaoGame::API::KGTPlayer playerApi;
playerApi.unregister(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// Unregistration successful
// [TODO] Return to the start screen
}
else
{
// Unregistration failed
} |
Asynchronous Example
std::wstring languageCode = systemApi.getLanguageCode(); |
Retrieve Language Tag
발췌문 삽입 |
---|
| System Information SDK Example |
---|
| System Information SDK Example |
---|
name | system_language_tag |
---|
nopanel | true |
---|
|
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayerKGTSystem playerApisystemApi;
playerApi.unregister(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// Unregistration successful
// [TODO] Return to the start screen
}
else
{
// Unregistration failed
}
}); |
Account Linking
...
Linking Accounts Without Using the Default Account Linking UI
...
Synchronous Example
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"
// Set the idpCode to connect to
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;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::DataAPI::KGTResultKGTSystem resultsystemApi;
KakaoGame
std::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::InvalidParameter == result.code)
{
// An invalid parameter was passed
}
else if (KakaoGame::Data::KGTResultCode::NotAuthorized == result.code)
{
// The user is not currently logged in
}
else if (KakaoGame::Data::KGTResultCode::InvalidState == result.code)
{
// 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
{
// Other errors occurred
}
} |
...
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::API::KGTSystem systemApi;
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::KGTSystem systemApi;
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"
// Set the idpCode to connect to KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::en; // English
// KakaoGame::Data::KGTIdpCodeKGTLanguageCode idpCodelanguageCode = KakaoGame::Data::KGTIdpCodeKGTLanguageCode::Kakaoko; // Korean
// KakaoGame::APIData::KGTPlayer playerApi;
playerApi.connect(GetSafeHwnd(), idpCode, [this](KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::ja; // Japanese
// KakaoGame::Data::KGTResultKGTLanguageCode result)languageCode {
if (result.isSuccess())
{
// IDP connection successful
// Player ID is not changed.
}
else
{
// IDP connection failed
if (= KakaoGame::Data::KGTLanguageCode::zh_hant; // Chinese(Traditional)
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::zh_hans; // Chinese (Simplified)
KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTResultCodeKGTLanguageCode::InvalidParameter == result.code)
{
// An invalid parameter was passed
}
else if (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"
KakaoGame::Data::KGTResultCode::NotAuthorized == result.code)
{
// The user is not currently logged in
}
else if (KakaoGame::Data::KGTResultCode::InvalidState == result.code)
{
// 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
{
// Other errors occurred
}
}
}); |
Profile
Retrieve My Information
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player); |
Retrieve My IDP Information
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTPlayer player;
KakaoGame::API::KGTPlayer playerApi;
playerApi.getCurrentPlayer(player);
player.kakaoProfile; |
System Information
Retrieve Language Code
...
KGTResult result;
bool isAlloweMe;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Display the view to set KakaoTalk game message reception preferences
kakaotalkApi.showSetting(GetSafeHwnd(), result, isAlloweMe);
if (result.isSuccess())
{
// Successfully set the KakaoTalk game message reception settings
isAlloweMe; // Whether message reception is allowed as per the settings
}
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 set the KakaoTalk game message reception settings
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystemKGTKakaoTalk systemApikakaotalkApi;
//
std::wstring languageCode = systemApi.getLanguageCode(); |
Retrieve Language Tag
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring languageCode = systemApi.getLanguageTag(); |
Retrieve Country Code
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring countryCode = systemApi.getCountryCode(); |
Retrieve IP-based Country Code
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring countryCode = systemApi.getGeoCountryCode(); |
Retrieve Device ID
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring deviceId = systemApi.getDeviceId(); |
Retrieve Device Model
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTSystem systemApi;
std::wstring deviceModel = systemApi.getDeviceModel(); |
Retrieve OS Name
...
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 settings
isAlloweMe; // Whether message reception is allowed as per the settings
}
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 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::APIData::KGTSystemKGTResult systemApiresult;
std::wstring osName = systemApi.getOSName(); |
Retrieve Network Connection Status
...
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTKakaoTalkProfile profile;
KakaoGame::API::KGTSystemKGTKakaoTalk systemApikakaotalkApi;
boolean networkConnected = systemApi.isNetworkConnected(); |
Retrieve Connected Network Type
...
코드 블럭 |
---|
|
#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::KGTSystem systemApi;
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)
// Retrieve KakaoTalk 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::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::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::en; // English
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::ko; // Korean
// ::API::KGTKakaoTalk kakaotalkApi;
// Retrieve KakaoTalk profile
kakaotalkApi.talkProfile([this](KakaoGame::Data::KGTLanguageCode languageCode =KGTResult result, KakaoGame::Data::KGTLanguageCode::ja; // Japanese
// KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::zh_hant; // Chinese(Traditional)
// KakaoGame::Data::KGTLanguageCode languageCode = KGTKakaoTalkProfile profile) {
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk profile
profile; // KakaoTalk profile information of the logged-in user
}
else if (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
...
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 |
---|
| EN_Kakao Integration Feature SDK Example |
---|
name | kakao_talk_show_settingfriends |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
bool isAlloweMestd::vector<KakaoGame::Data::KGTPlayer> players;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// ShowRetrieve the viewlist to set whether to receive KakaoTalk of game messagesfriends
kakaotalkApi.showSetting(GetSafeHwnd(), friends(result, isAlloweMeplayers);
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk setgame whetherfriends to receive KakaoTalk game messages
isAlloweMe; // Indicates whether receiving messages is allowedlist.
// 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 not a KakaoTalk user, such as an account that is only registered with Kakao Story.
}
else
{
// Failed to set whether to receive KakaoTalk game messages
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Show the view to set whether to receive KakaoTalk game messages
kakaotalkApi.showSetting(GetSafeHwnd(), [this](KakaoGame::Data::KGTResult result, bool isAlloweMe) {
if (result.isSuccess()) 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::KGTKakaoTalk kakaotalkApi;
// 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
{
// Successfully set whetherFailed to receiveretrieve KakaoTalk game messagesfriends list
isAlloweMe; // Indicates whether receiving messages is allowed
}
else if (}
}); |
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::KGTResult::NotKakaoTalkUser == result.code)
{
KGTKakaoProfile kakaoProfile;
// The logged-in user is not a 'KakaoTalk' user. This occurs when the user is not a KakaoTalk user, such as an account that is only registered with Kakao Story.
}
else
{
// Failed to set whether to receive KakaoTalk game messages
}
}); |
Retrieve KakaoTalk Profile
...
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::Data::KGTKakaoTalkProfile profile;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Retrieve KakaoTalk profile
kakaotalkApi.talkProfile(result, profile);
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk profile
profile; // KakaoTalk profile information of the logged-in user
}
else if ([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::NotKakaoTalkUser == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This occurs when the user is not result;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Send a KakaoTalk user,game such as an account that is only registered with Kakao Story.
}
else
message
kakaotalkApi.sendGameMessage(kakaoProfile, templateId, arguments, result);
if (result.isSuccess())
{
// FailedSuccessfully tosent retrieveKakaoTalk KakaoTalkchat profile
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Retrieve KakaoTalk profile
kakaotalkApi.talkProfile([this](message
}
else if (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
{
// The recipient has set message reception to be disabled.
}
else if (KakaoGame::Data::KGTResult result, KakaoGame::Data::KGTKakaoTalkProfile profile) {
if (result.isSuccess())
ExceedDailyUsage == result.code)
{
// Successfully retrieved KakaoTalk profile
profile; // KakaoTalk profile informationOccurs when the daily quota for sending messages to a specific app (regardless of the logged-in user
recipient) is exceeded.
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUserExceedMonthlyUsage == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This occurs when the user is not a KakaoTalk user, such as an account that is only registered with Kakao Story.
}
else
{
// Failed to retrieve KakaoTalk profile
}
}); |
Retrieve KakaoTalk Game Friend List
...
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
std::vector<KakaoGame::Data::KGTPlayer> players; 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
} |
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;
// RetrieveSend thea list ofKakaoTalk game friendsmessage
kakaotalkApi.friends(result, players);
sendGameMessage(kakaoProfile, templateId, arguments, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk game friends list.
sent KakaoTalk chat message
}
else if (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
{
// GameThe friendsrecipient listhas forset eachmessage (autoreception playerto inbe players)disabled.
{}
}
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUserExceedDailyUsage == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This occursOccurs when the daily quota for sending messages to a specific app (regardless of the recipient) is exceeded.
}
else if (KakaoGame::Data::KGTResult::ExceedMonthlyUsage == result.code)
{
// Occurs when the usermonthly isquota notfor asending KakaoTalkmessages user,to sucha asspecific anperson accountfor thata isspecific onlyapp registered with Kakao Storyis exceeded.
}
else
{
// Failed to retrievesend KakaoTalk profile chat message
}
} |
...
Adding a KakaoTalk Channel
발췌문 삽입 |
---|
| Kakao Integration Feature SDK Example |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_talk_add_plus_friend |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
// Retrieve the list of game friends
kakaotalkApi.friends([this](// [TODO] Set the channel Id
int channelId = 0;
KakaoGame::Data::KGTResult result,;
stdKakaoGame::vector<KakaoGame::Data::KGTPlayer> players) {
API::KGTKakaoTalk kakaotalkApi;
kakaotalkApi.addChannel(channelId, result);
if (result.isSuccess())
{
// Successfully retrieved KakaoTalk game friends list.
// Game friends list
for each (auto player in players)
{
}
}
)
{
// 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 not a KakaoTalk user, such as an account that is only registered with Kakao StoryKakaoStory and not KakaoTalk.
}
else
{
// Failed to retrieve KakaoTalk game friends list
}
}); |
Sending KakaoTalk Game Messages
...
// Failed to add the channel
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// Friend object retrieved via the friends API
[TODO] Set the channel Id
int channelId = 0;
KakaoGame::API::KGTKakaoTalk kakaotalkApi;
kakaotalkApi.addChannel(channelId, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// Successfully added the channel
}
else if (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 resultKGTResult::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
발췌문 삽입 |
---|
| Kakao Integration Feature SDK Example |
---|
| Kakao Integration Feature SDK Example |
---|
name | kakao_invitation_joiners |
---|
nopanel | true |
---|
|
Synchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// [TODO] Set the event ID
int32 eventId = 0;
KakaoGame::Data::KGTResult result;
std::vector<KakaoGame::Data::KGTPlayer> players;
KakaoGame::API::KGTKakaoTalkKGTKakaoInvitation kakaotalkApikakaoInvitationApi;
// Retrieve Sendthe list aof KakaoTalkplayers gameI messageinvited
kakaotalkApikakaoInvitationApi.sendGameMessagejoiners(kakaoProfileeventId, templateIdresult, arguments, resultplayers);
if (result.isSuccess())
{
// Successfully sent KakaoTalk chat message
}
else if retrieved the list of players I invited
for (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
{
// The recipient has set message reception to "Do Not Disturb"
}
else if (KakaoGame::Data::KGTResult::ExceedDailyUsage == result.code)
{
// Occurs when the daily quota for sending messages from a specific app (regardless of recipient) is exceeded
}
else if (KakaoGame::Data::KGTResult::ExceedMonthlyUsage == result.code)
{
// Occurs when the monthly quota for sending messages to a specific person from 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, KGTPlayer player : 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::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 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())
{
// Successfully sent KakaoTalk chat message
}
else if retrieved the list of players I invited
for (KakaoGame::Data::KGTResult::MessageSettingDisabled == result.code)
KGTPlayer player : players)
{
// TheRecipient's recipientplayer has set message reception to "Do Not Disturb"
}
else if (KakaoGame::Data::KGTResult::ExceedDailyUsage == result.code)
{
ID
player.playerId;
// Recipient's nickname
player.kakaoProfile.nickname;
// Recipient's profile thumbnail image
player.kakaoProfile.thumbnailImageUrl;
// OccursCheck whenif the daily quota for sending messages from a specific app (regardless of recipient) is exceededrecipient 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)
{
// OccursThe whenlogged-in theuser monthlyis quotanot fora sending messages to a specific person from a specific app is exceeded'KakaoTalk' user. (For cases where the user is not a KakaoTalk user)
}
else
{
// Failed to sendretrieve KakaoTalkthe chatlist
message
}
}); |
...
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 channelevent IdID
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 added retrieved the counts
// totalReceiversCount - Total number of friends
// joinersCount - Number of friends who joined the channelgame
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This(For occurscases whenwhere the user is not a KakaoTalk user, such as an account that is only registered with Kakao Story.
)
}
else
{
// Failed to addretrieve the channelcounts
} |
Asynchronous Example
코드 블럭 |
---|
|
#include "KakaoGameLib.h"
// [TODO] Set the channelevent IdID
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 added retrieved the counts
// totalReceiversCount - Total number of friends
// joinersCount - Number of friends who joined the channelgame
}
else if (KakaoGame::Data::KGTResult::NotKakaoTalkUser == result.code)
{
// The logged-in user is not a 'KakaoTalk' user. This(For occurscases whenwhere the user is not a KakaoTalk user, such as an account that is only registered with Kakao Story.
)
}
else
{
// Failed to addretrieve the channelcounts
}
}); |