Initialization and Status Change Event Processing
SDK Initialization
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
Synchronous Example
#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 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 - If initialization fails, 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 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. } }
Asynchronous Example
#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 - Since 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 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. } } });
Login
Logging In Without Using the Default Login UI
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 login is successful, proceed to the game screen. } else { // IDP login or platform login failed // [TODO] In case of login failure, notify the user and 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 of the network issue and the failure to start, then retry } else if (KakaoGame::Data::KGTResultCode::Forbidden == result.code) { // [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. } 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. } }
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 login is successful, proceed to the game screen. } 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 || 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 (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] If the user cancels during the login process, maintain the login screen. } 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. } } });
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. } 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 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. } }
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. 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 { // [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
탈퇴 UI를 개발사에서 직접 구현하고 싶을 경우(탈퇴 UI를 사용하고 싶지 않은 경우)를 위해서, 탈퇴 API가 제공됩니다.
Unregistering Without Using the Default Unregistration UI
기본 탈퇴 UI를 사용하지 않는 탈퇴하는 예제입니다.
Synchronous Example
#include "KakaoGameLib.h" KakaoGame::Data::KGTResult result; 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
#include "KakaoGameLib.h" 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
Linking Accounts Without Using the Default Account Linking UI
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::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 } }
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
#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
#include "KakaoGameLib.h" KakaoGame::API::KGTSystem systemApi; 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
#include "KakaoGameLib.h" KakaoGame::API::KGTSystem systemApi; std::wstring osName = systemApi.getOSName();
Retrieve Network Connection Status
#include "KakaoGameLib.h" KakaoGame::API::KGTSystem systemApi; 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)
#include "KakaoGameLib.h" // KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::en; // English // KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::ko; // Korean // KakaoGame::Data::KGTLanguageCode languageCode = KakaoGame::Data::KGTLanguageCode::ja; // Japanese // KakaoGame::Data::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
Synchronous Example
#include "KakaoGameLib.h" KakaoGame::Data::KGTResult result; bool isAlloweMe; KakaoGame::API::KGTKakaoTalk kakaotalkApi; // Show the view to set whether to receive KakaoTalk game messages kakaotalkApi.showSetting(GetSafeHwnd(), result, isAlloweMe); if (result.isSuccess()) { // Successfully set whether to receive KakaoTalk game messages isAlloweMe; // Indicates whether receiving messages is allowed } 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()) { // Successfully set whether to receive KakaoTalk game messages isAlloweMe; // Indicates whether receiving messages is allowed } 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 } });
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 (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 retrieve KakaoTalk profile }
Asynchronous Example
#include "KakaoGameLib.h" KakaoGame::API::KGTKakaoTalk kakaotalkApi; // Retrieve KakaoTalk profile kakaotalkApi.talkProfile([this](KakaoGame::Data::KGTResult result, KakaoGame::Data::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 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; 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 not a KakaoTalk user, such as an account that is only registered with Kakao Story. } 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 not a KakaoTalk user, such as an account that is only registered with Kakao Story. } else { // Failed to retrieve KakaoTalk game friends list } });
Sending KakaoTalk Game Messages
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 "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, [this](KakaoGame::Data::KGTResult result) { if (result.isSuccess()) { // Successfully sent KakaoTalk chat message } else if (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 } });
Adding a KakaoTalk Channel
Synchronous Example
#include "KakaoGameLib.h" // [TODO] Set the channel Id int channelId = 0; KakaoGame::Data::KGTResult result; KakaoGame::API::KGTKakaoTalk kakaotalkApi; kakaotalkApi.addChannel(channelId, result); 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 not a KakaoTalk user, such as an account that is only registered with Kakao Story. } else { // Failed to add the channel }
Asynchronous Example
#include "KakaoGameLib.h" // [TODO] Set the channel Id int channelId = 0; KakaoGame::API::KGTKakaoTalk kakaotalkApi; kakaotalkApi.addChannel(channelId, [this](KakaoGame::Data::KGTResult result, int32_t totalReceiversCount, int32_t joinersCount) { 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 not a KakaoTalk user, such as an account that is only registered with Kakao Story. } else { // Failed to add the channel } });
댓글 추가