목차 | ||
---|---|---|
|
...
Initialization and Status Change Event Processing
...
SDK Initialization
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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 ID of 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 exitclose 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 anotherother errorerrors occursoccur, provide an error messagenotification and promptrequest toa retry of the start process. - If the problemissue persists, check the error code and logs to determine the cause. } } }); |
Pause
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTApplication; import com.kakaogame.KGTResult; KGTApplication.pause(activity, result -> { // }); |
Resume
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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, movenavigate to the login screen if it'sit’s an authentication failure,; and otherwise, show an error popup and check whetherif 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] ForIf other errors occur, showprovide an error messagenotification and request a retry theof the resumestart process. - If the issue persists, closecheck the error code and logs to determine the appcause. } } }); |
Adding a New Intent Receive Setting
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // Update the current activity with the new intent this.setIntent(intent); } |
Login
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
Logging In Without Using the Default Login UI
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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] In case ofIf login failurefails, inform the user and allowprompt them ato 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 thelogging loginin. } else if (result.getCode() == KGTResult.KGTResultCode.USER_CANCELED) { // [TODO] IfSince the user canceled during the login process, keep the login screen should be activemaintained. } 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] For anyIf other errors occur, displayprovide an error messagenotification and prompt the user to retry login.logging in. - Check It is necessary to check the error code and logs to identifydetermine the cause. } } }); |
Logout
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
Logging Out Without Using the Default Logout UI
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
Unregistering Without Using the Default Unregistration 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
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
Linking Accounts Without Using the Default Account Linking UI
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer; KGTPlayer localPlayer = KGTPlayer.getCurrentPlayer(); |
Retrieve My IDP Information
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTIdpProfile; KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); |
System Information
...
Retrieve Language Code
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String languageCode = KGTSystem.getLanguageCode(); |
Retrieve Language Tag
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String languageCode = KGTSystem.getLanguageTag(); |
Retrieve Country Code
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String countryCode = KGTSystem.getCountryCode(); |
Retrieve IP-based Country Code
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String countryCode = KGTSystem.getGeoCountryCode(); |
Retrieve Device ID
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String deviceId = KGTSystem.getDeviceId(); |
Retrieve Device Model
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String deviceModel = KGTSystem.getDeviceModel(); |
Retrieve OS Name
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String osName = KGTSystem.getOSName(); |
Retrieve Network Connection Status
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; boolean networkConnected = KGTSystem.isNetworkConnected(); |
Retrieve Connected Network Type
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem; String networkType = KGTSystem.getNetworkType(); |
Kakao Integration Feature
...
Setting Up KakaoTalk Game Message Reception
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; // Display the view to set KakaoTalk game message reception settingpreferences view 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 ifwhen the accountuser is only registered with KakaoStory and not with KakaoTalk. } else { // Failed to set the KakaoTalk game message reception settings } }); |
Retrieve KakaoTalk Profile
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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 ifwhen the accountuser is only registered with KakaoStory and not with KakaoTalk. } else { // Failed to retrieve KakaoTalk profile } }); |
Retrieve KakaoTalk Game Friend List
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoFriendProfile; // Retrieve the list of game friends KGTKakaoTalk.friends(result -> { if (result.isSuccess()) { // Successfully retrieved the 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 ifwhen the accountuser is only registered with KakaoStory and not with KakaoTalk. } else { // Failed to retrieve the KakaoTalk game friends list } }); |
Sending KakaoTalk Game Messages
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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 IDId 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 Thewhen the daily quota for sending messages fromto a singlespecific app has been exceeded (regardless of the recipient) is exceeded. } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) { // Occurs when Thethe monthly quota for sending messages to a specific person fromfor a singlespecific app has beenis exceeded. } else { // Failed to send the KakaoTalk chat message } } }); |
Sending KakaoTalk Friend Invitation Messages
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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 a user exceeds the daily quota for sending messages fromto a specific app (regardless of the recipient) is exceeded. } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) { // Occurs when a user exceeds the monthly quota for sending messages to a specific person fromfor a specific app is exceeded. } else { // Failed to send KakaoTalk invite message } } }); |
Adding a KakaoTalk Channel
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
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 accountuser is only registered with KakaoStory and not KakaoTalk. } else { // Failed to add the channel } }); |
Google Games
...
Retrieve the list of friends to whom I sent an invite message
발췌문 삽입 | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievementsKGTKakaoInvitation; import com.kakaogame.KGTPlayer; import com.kakaogame.KGTKakaoFriendProfile; // Show[TODO] GoogleEvent GamesId. achievementint informationeventId screen KGTGoogleGamesAchievements.showAchievement(activity); |
Achievement Unlocked
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements;
// [TODO] Set achievement ID
String id = "";
// Unlock achievement
KGTGoogleGamesAchievements.unlock(id); |
Display Achievement
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements;
// [TODO] Set achievement ID
String id = "";
KGTGoogleGamesAchievements.reveal(id); |
Increase Achievement Level
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements;
// [TODO] Set achievement ID
String id = "";
int numSteps = 0;
KGTGoogleGamesAchievements.setSteps(id, numSteps); |
Set Achievement Level
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements; // [TODO] Set achievement ID String id = ""; int numSteps = 0; KGTGoogleGamesAchievements.increment(id, numSteps= 0; // Retrieve the list of friends to whom I sent an invite message. KGTKakaoInvitation.joiners(eventId, result -> { if (result.isSuccess()) { // Successfully retrieve the list of friends. // Retrieve the list of players I have invited. KGTKakaoInvitation.KGTInvitationJoinersResponse joinersResponse = result.getContent(); // List of players who have joined the app, including those who have left. List<KGTPlayer> joiners = joinersResponse.getPlayers(); if (joiners.isEmpty()) { // No users have joined the app. } else { // There are users who have joined the app. for (KGTPlayer player : joiners) { // Recipient’s player ID String playerId = player.getPlayerId(); KGTKakaoFriendProfile kakaoProfile = (KGTKakaoFriendProfile) player.getIdpProfile(); // Recipient’s nickname String nickname = kakaoProfile.getNickname(); // Recipient’s profile thumbnail image String thumbnailImageUrl = kakaoProfile.getThumbnailImageUrl(); // Recipient’s withdrawal history inquiry. Use the corresponding flag when displaying the withdrawal status information in the UI. boolean isUnregistered = kakaoProfile.isUnregistered(); } } } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // 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 the list of friends. } }); |
Retrieve the count of friends to whom I sent an invite message
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoInvitation;
// [TODO] Event Id.
int eventId = 0;
KGTKakaoInvitation.receiversCount(eventId, result -> {
if (result.isSuccess()) {
// Successfully retrieve the count of friends to whom I sent an invite message.
// Retrieve the number of friends I have invited.
KGTInvitationReceviersCountResponse response = result.getContent();
int total = response.getTotalReceiversCount();
int joinersCount = response.getJoinersCount();
} else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) {
// 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 the count of friends.
}
}); |