Initialization and Status Change Event Processing
SDK Initialization
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Initialization and Status Change Event Processing SDK Example'.
import com.kakaogame.KGTApplication; import com.kakaogame.KGTConfig; /** * When using a single app */ KGTConfig config = new KGTConfig(); config.setAppInfo( "909428", // appID "c3c38bbfa3828b342d946e9770c974d0", // appSecret "1.0.0", // appVersion "googlePlay", // market "14", // ageRating KGTServerType.QA, // server type KGTLogLevel.Error // log level ); /** * When using an app group */ Map<String, String> appsForAppGroup = new HashMap<>(); appsForAppGroup.put("909428", "c3c38bbfa3828b342d946e9770c974d0"); appsForAppGroup.put("921478", "5891c32124ca35821890a0bc1cec77a5"); KGTConfig config = new KGTConfig(); config.setAppGroupInfos( "tubeAppGroup", // appGroupId appsForAppGroup, // app info map "1.0.0", // appVersion "googlePlay", // market "14", // ageRating KGTServerType.QA, // server type KGTLogLevel.Error // log level ); KGTApplication.initSDK(this, config);
Start
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Initialization and Status Change Event Processing SDK Example'.
import com.kakaogame.KGTApplication; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; KGTApplication.start(activity, null, result -> { if (result.isSuccess()) { // If the start is successful // Check if auto-login is enabled boolean isLoggedIn = KGTPlayer.isLoggedIn(); if (isLoggedIn) { // The current Player's ID issued by the platform String playerId = KGTPlayer.getCurrentPlayer().getPlayerId(); // Platform access token (ZAT) String accessToken = KGTPlayer.getCurrentPlayer().getAccessToken(); // Retrieve the current IDP authentication information KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); // [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, you should retry the start or close the app. int resultCode = result.getCode(); if (resultCode == KGTResult.KGTResultCode.NETWORK_FAILURE || resultCode == KGTResult.KGTResultCode.SERVER_TIMEOUT || resultCode == KGTResult.KGTResultCode.SERVER_CONNECTION_FAILED) { // [TODO] If a network error occurs, inform 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. } } });
Pause
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Initialization and Status Change Event Processing SDK Example'.
import com.kakaogame.KGTApplication; import com.kakaogame.KGTResult; KGTApplication.pause(activity, result -> { // });
Resume
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Initialization and Status Change Event Processing SDK Example'.
import com.kakaogame.KGTApplication; import com.kakaogame.KGTResult; KGTApplication.resume(activity, result -> { if (result.isSuccess()) { // [TODO] If resume is successful, resume the game screen. } else { // [TODO] If resume fails, navigate to the login screen if it’s an authentication failure; otherwise, show an error popup and check if the user wants to retry. if (result.getCode() == KGTResult.KGTResultCode.AUTH_FAILURE || result.getCode() == KGTResult.KGTResultCode.IDP_AUTH_FAILURE) { // [TODO] In case of authentication failure, move to the start screen and perform the new login flow again. } 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. } } });
Adding a New Intent Receive Setting
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Initialization and Status Change Event Processing SDK Example'.
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // Update the current activity with the new intent this.setIntent(intent); }
Login
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Login SDK Example'.
Logging In Without Using the Default Login UI
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Login SDK Example'.
import com.kakaogame.KGTApplication; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; // Set the IdpCode for the login KGTIdpProfile.KGTIdpCode code = KGTIdpCode.Kakao; // Log in with a specific IDP KGTPlayer.login(activity, code, result -> { if (result.isSuccess()) { // IDP login and platform login succeeded // The current Player's ID issued by the platform String playerId = KGTPlayer.getCurrentPlayer().getPlayerId(); // Platform access token String accessToken = KGTPlayer.getAccessToken(); // Retrieve the current IDP authentication information KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); // [TODO] Since 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 (result.getCode() == KGTResult.KGTResultCode.NETWORK_FAILURE || result.getCode() == KGTResult.KGTResultCode.SERVER_TIMEOUT || result.getCode() == KGTResult.KGTResultCode.SERVER_CONNECTION_FAILED) { // [TODO] If a network error occurs, prompt the user to retry logging in. } else if (result.getCode() == KGTResult.KGTResultCode.USER_CANCELED) { // [TODO] Since the user canceled during the login process, the login screen should be maintained. } else if (result.getCode() == KGTResult.KGTResultCode.BLOCKED_BY_POLICY) { // [TODO] The login was attempted from a blocked country code or IP range. Handle accordingly. } else { // [TODO] If other errors occur, provide an error notification and prompt the user to retry logging in. - It is necessary to check the error code and logs to determine the cause. } } });
Logout
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Logout SDK Example'.
Logging Out Without Using the Default Logout UI
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Logout SDK Example'.
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; // Logout request KGTPlayer.logout(activity, false, 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를 사용하지 않는 탈퇴하는 예제입니다.
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; // Unregister request KGTPlayer.unregister(activity, false, result -> { if (result.isSuccess()) { // Unregistration successful // [TODO] Return to the start screen } else { // Unregistration failed } });
Account Linking
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Account Linking SDK Example'.
Linking Accounts Without Using the Default Account Linking UI
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Account Linking SDK Example'.
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTResult; // Set the IdpCode to log in with KGTIdpProfile.KGTIdpCode code = KGTIdpCode.Kakao; // Connect account with a specific idp KGTPlayer.connect(activity, code, result -> { if (result.isSuccess()) { // IDP connection successful // Player ID will not change. } else { // IDP connection failed if (result.getCode() == KGTResult.KGTResultCode.INVALID_PARAMETER) { // Invalid parameter passed // e.g., activity is null } else if (result.getCode() == KGTResult.KGTResultCode.NOT_AUTHORIZED) { // The current state is not authorized } else if (result.getCode() == KGTResult.KGTResultCode.INVALID_STATE) { // The currently authenticated IDP is not device authentication } else if (result.getCode() == KGTResult.KGTResultCode.ALREADY_USED_IDP_ACCOUNT) { // The account is already authenticated } else { // Other errors occurred } } });
Profile
Retrieve My Information
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Profile SDK Example'.
import com.kakaogame.KGTPlayer; KGTPlayer localPlayer = KGTPlayer.getCurrentPlayer();
Retrieve My IDP Information
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Profile SDK Example'.
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTIdpProfile; KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile();
System Information
Retrieve Language Code
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String languageCode = KGTSystem.getLanguageCode();
Retrieve Language Tag
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String languageCode = KGTSystem.getLanguageTag();
Retrieve Country Code
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String countryCode = KGTSystem.getCountryCode();
Retrieve IP-based Country Code
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String countryCode = KGTSystem.getGeoCountryCode();
Retrieve Device ID
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String deviceId = KGTSystem.getDeviceId();
Retrieve Device Model
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String deviceModel = KGTSystem.getDeviceModel();
Retrieve OS Name
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String osName = KGTSystem.getOSName();
Retrieve Network Connection Status
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; boolean networkConnected = KGTSystem.isNetworkConnected();
Retrieve Connected Network Type
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_System Information SDK Example'.
import com.kakaogame.KGTSystem; String networkType = KGTSystem.getNetworkType();
Kakao Integration Feature
Setting Up KakaoTalk Game Message Reception
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Kakao Integration Feature SDK Example'.
import com.kakaogame.KGTKakaoTalk; // Display the view to set KakaoTalk game message reception preferences KGTKakaoTalk.showSetting(activity, result -> { if (result.isSuccess()) { // Successfully set the KakaoTalk game message reception settings boolean allowMessage = result.getContent(); // Whether message reception is allowed as per the settings } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is not a KakaoTalk user, such as in the case of a user who is only registered for KakaoStory. } else { // Failed to set the KakaoTalk game message reception settings } });
Retrieve KakaoTalk Profile
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Kakao Integration Feature SDK Example'.
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoTalkProfile; // Retrieve KakaoTalk profile KGTKakaoTalk.talkProfile(result -> { if (result.isSuccess()) { // Successfully retrieved KakaoTalk profile talkProfile = result.getContent(); // The KakaoTalk profile information of the logged-in user } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is not a KakaoTalk user, such as in the case of a user who is only registered for KakaoStory. } else { // Failed to retrieve KakaoTalk profile } });
Retrieve KakaoTalk Game Friend List
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Kakao Integration Feature SDK Example'.
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoFriendProfile; // Retrieve the list of game friends KGTKakaoTalk.friends(result -> { if (result.isSuccess()) { // Successfully retrieved KakaoTalk game friends list. List<KGTPlayer> friendList = result.getContent(); // Game friends list for (KGTPlayer player : friendList) { KGTKakaoFriendProfile kakaoProfile = (KGTKakaoFriendProfile)player.getIdpProfile(); } } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is not a KakaoTalk user, such as in the case of a user who is only registered for KakaoStory. } else { // Failed to retrieve KakaoTalk game friends list } });
Sending KakaoTalk Game Messages
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Kakao Integration Feature SDK Example'.
import com.kakaogame.KGTKakaoFriendProfile; import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoTalkProfile; // Friend object retrieved through the friends API KGTKakaoFriendProfile kakaoProfile; // Kakao profile (KGTKakaoFriendProfile object) // [TODO] Set the Template Id String templateId = ""; // [TODO] Set the arguments for the message template Map<String, String> args = new LinkedHashMap<>(); if (talkProfile != null) { args.put("${nickname}", talkProfile.getNickname()); } args.put("rog_link", "test=100&hello=20111"); args.put("bruce2", "test=100&hello=20111"); // Send a KakaoTalk game message KGTKakaoTalk.sendGameMessage(kakaoProfile, templateId, args, result -> { if (result.isSuccess()) { // Successfully sent a KakaoTalk chat message } else { if (result.getCode() == KGTResult.KGTResultCode.MESSAGE_SETTING_DISABLE) { // The recipient has set message reception to disabled } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_DAILY_USAGE) { // Occurs when the daily quota for sending messages to a specific app (regardless of the recipient) is exceeded. } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) { // 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 } } });
Sending KakaoTalk Friend Invitation Messages
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Kakao Integration Feature SDK Example'.
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoTalkProfile; import com.kakaogame.KGTKakaoUser; // [TODO] Set whether to display as a popup window boolean isSingle = true; // [TODO] Set whether to display as a popup window boolean isPopup = true; // [TODO] Set the template Id String templateId = ""; // [TODO] Set the parameters for the message template Map<String, String> args = new LinkedHashMap<>(); if (talkProfile != null) { args.put("${nickname}", talkProfile.getNickname()); } KGTKakaoTalk.sendInviteMessage(activity, isSingle, isPopUp, templateId, args, result -> { if (result.isSuccess()) { // Successfully sent KakaoTalk invite message for (KGTKakaoUser kakaoUser : result.getContent()) { // Check the list of users who received the invite message } } else { // Failed to send to all users (need to return a common cause) if (result.getCode() == KGTResult.KGTResultCode.MESSAGE_SETTING_DISABLE) { // The recipient has set message reception to disabled } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_DAILY_USAGE) { // Occurs when the daily quota for sending messages to a specific app (regardless of the recipient) is exceeded. } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) { // Occurs when the monthly quota for sending messages to a specific person for a specific app is exceeded. } else { // Failed to send KakaoTalk invite message } } });
Adding a KakaoTalk Channel
매크로 처리 오류 'excerpt-include' : No link could be created for 'EN_Kakao Integration Feature SDK Example'.
import com.kakaogame.KGTKakaoTalk; // [TODO] Set the channel Id int channelId = 0; KGTKakaoTalk.addChannel(plusFriendId, result -> { if (result.isSuccess()) { // Successfully added the channel } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // The logged-in user is not a 'KakaoTalk' user. This occurs when the user is not a KakaoTalk user, such as in the case of a user who is only registered for KakaoStory. } else { // Failed to add the channel } });
Google Games
Show Achievement Screen
매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'EN_구글 게임 SDK 예제'.
import com.kakaogame.KGTGoogleGamesAchievements; // Show Google Games achievement information screen KGTGoogleGamesAchievements.showAchievement(activity);
Achievement Unlocked
매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'EN_구글 게임 SDK 예제'.
import com.kakaogame.KGTGoogleGamesAchievements; // [TODO] Set achievement ID String id = ""; // Unlock achievement KGTGoogleGamesAchievements.unlock(id);
Display Achievement
매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'EN_구글 게임 SDK 예제'.
import com.kakaogame.KGTGoogleGamesAchievements; // [TODO] Set achievement ID String id = ""; KGTGoogleGamesAchievements.reveal(id);
Increase Achievement Level
매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'EN_구글 게임 SDK 예제'.
import com.kakaogame.KGTGoogleGamesAchievements; // [TODO] Set achievement ID String id = ""; int numSteps = 0; KGTGoogleGamesAchievements.setSteps(id, numSteps);
Set Achievement Level
매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'EN_구글 게임 SDK 예제'.
import com.kakaogame.KGTGoogleGamesAchievements; // [TODO] Set achievement ID String id = ""; int numSteps = 0; KGTGoogleGamesAchievements.increment(id, numSteps);
댓글 추가