목차 |
---|
...
...
|
...
초기화 및 상태변화 이벤트 처리
...
SDK 초기화
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTApplication; import com.kakaogame.KGTConfig; /** * 단일 앱으로 사용하는 경우 */ KGTConfig config = new KGTConfig(); config.setAppInfo( "9094281113970", // appID "c3c38bbfa3828b342d946e9770c974d05b23360a86e87ba790b39475a98579bd", // appSecret "1.0.0", // appVersion "googlePlay", // market "14", // ageRating KGTServerType.QALive, // server type KGTLogLevel.Error // log level ); /** * 앱 그룹을 사용하는 경우 */ 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()) { // 스타트가 성공 한 경우 // 자동로그인 여부 boolean isLoggedIn = KGTPlayer.isLoggedIn(); if (isLoggedIn)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()) { // 스타트가 성공 한 경우 // 자동로그인 여부 boolean isLoggedIn = KGTPlayer.isLoggedIn(); if (isLoggedIn) { // 플랫폼에서 발급한 현재 Player의 ID String playerId = KGTPlayer.getCurrentPlayer().getPlayerId(); // 플랫폼 액세스 토큰(ZAT) String accessToken = KGTPlayer.getCurrentPlayer().getAccessToken(); // 현재 IDP 인증 정보를 가져옴 KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); // [TODO] 게임 화면으로 이동 합니다. } else { // 플랫폼에서[TODO] 발급한자동로그인이 현재안 Player의된 ID String playerId = KGTPlayer.getCurrentPlayer().getPlayerId(); // 플랫폼 액세스 토큰(ZAT) String accessToken = KGTPlayer.getCurrentPlayer().getAccessToken경우 로그인 화면으로 이동 합니다. } } else { // 스타트가 실패 한 경우 - 초기화가 실패한 경우 이므로 스타트를 재시도 하거나 앱을 종료 하여야 합니다. int resultCode = result.getCode(); // 현재 IDP 인증 정보를 가져옴if (resultCode == KGTResult.KGTResultCode.NETWORK_FAILURE || resultCode == KGTResult.KGTResultCode.SERVER_TIMEOUT KGTIdpProfile|| idpProfileresultCode == KGTPlayerKGTResult.getCurrentPlayer().getIdpProfile(); KGTResultCode.SERVER_CONNECTION_FAILED) { // [TODO] 게임 화면으로 이동 합니다. 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도 } else { // [TODO] 자동로그인이나머지 안에러가 된발생한 경우경우에는 로그인에러 화면으로안내 이동후 합니다. } } else { // 스타트가 실패 한 경우 - 초기화가 실패한 경우 이므로 스타트를 재시도 하거나 앱을 종료 하여야 합니다. int resultCode = result.getCode(); if (resultCode == KGTResult.KGTResultCode.NETWORK_FAILURE || resultCode == KGTResult.KGTResultCode.SERVER_TIMEOUT || resultCode == KGTResult.KGTResultCode.SERVER_CONNECTION_FAILED) { // [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도 } else { 스타트 재시도 요청 하여야 합니다. - 문제가 반복해서 발생하는 경우 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } }); |
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] 나머지resume이 에러가성공 발생한한 경우에는경우 에러게임 안내화면을 후재개합니다. 스타트 } 재시도else 요청 하여야 합니다. - 문제가 반복해서 발생하는{ // [TODO] resume이 실패 한 경우 에러코드인증 및실패 로그면 확인로그인 후화면으로, 원인그외의 파악이 필요합니다경우는 에러 팝업을 띄우고 재시도 여부를 확인합니다. } } }); |
특정 appId로 스타트 (Start) 하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTApplication;
import com.kakaogame.KGTIdpProfile;
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTResult;
// 사용자가 선택한 appId 또는 기존에 사용자가 선택한 appId를 저장 후 얻어오는 부분은 게임이 구현
String selectedAppId = "";
KGTApplication.start(activity, selectedAppId, result -> {
if (result.isSuccess()) {
// 스타트가 성공 한 경우
// 자동로그인 여부
boolean isLoggedIn = KGTPlayer.isLoggedIn();
if (isLoggedIn) {
// 플랫폼에서 발급한 현재 Player의 ID
String playerId = KGTPlayer.getCurrentPlayer().getPlayerId();
// 플랫폼 액세스 토큰(ZAT)
String accessToken = KGTPlayer.getCurrentPlayer().getAccessToken();
// 현재 IDP 인증 정보를 가져옴
KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile();
// [TODO] 게임 화면으로 이동 합니다.
} else {
// [TODO] 자동로그인이 안 된 경우 로그인 화면으로 이동 합니다.
}
} else {
// 스타트가 실패 한 경우 - 초기화가 실패한 경우 이므로 스타트를 재시도 하거나 앱을 종료 하여야 합니다.
int resultCode = result.getCode();
if (resultCode == KGTResult.KGTResultCode.NETWORK_FAILURE
|| resultCode == KGTResult.KGTResultCode.SERVER_TIMEOUT
|| resultCode == KGTResult.KGTResultCode.SERVER_CONNECTION_FAILED) {
// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
} else {
// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 스타트 재시도 요청 하여야 합니다. - 문제가 반복해서 발생하는 경우 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
}
}
}); |
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] resume이 성공 한 경우 게임 화면을 재개합니다.
} else {
// [TODO] resume이 실패 한 경우 인증 실패 면 로그인 화면으로, 그외의 경우는 에러 팝업을 띄우고 재시도 여부를 확인합니다.
if (result.getCode() == KGTResult.KGTResultCode.AUTH_FAILURE
|| result.getCode() == KGTResult.KGTResultCode.IDP_AUTH_FAILURE) {
// [TODO] 인증 실패의 경우 시작 화면으로 이동해서 다시 신규 로그인 flow를 수행합니다.
} else {
// [TODO] 나머지 에러가 발생한 경우 경우 에러 안내 후 resume 을 재시도 합니다. - 반복해서 문제가 발생하는 경우 앱을 종료하도록 합니다.
}
}
}); |
새로운 Intent 받기 설정 추가하기
...
코드 블럭 | ||
---|---|---|
| ||
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// 현재 액티비티에 새로운 intent 업데이트
this.setIntent(intent);
} |
로그인
...
기본 로그인 UI를 사용하는 로그인하기
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTApplication; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; KGTPlayer.login(activity, result -> { if (result.isSuccess()) { // IDP 로그인과 플랫폼 로그인 성공 // 플랫폼에서 발급한 현재 Player의 ID String playerId = KGTPlayer.getCurrentPlayer().getPlayerId(); // 플랫폼 액세스 토큰 String accessToken = KGTPlayer.getCurrentPlayer().getAccessToken(); // 현재 IDP 인증 정보를 가져옴 KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); if (result.getCode() == KGTResult.KGTResultCode.AUTH_FAILURE || result.getCode() == KGTResult.KGTResultCode.IDP_AUTH_FAILURE) { // [TODO] 인증 실패의 경우 시작 화면으로 이동해서 다시 신규 로그인 flow를 수행합니다. } else { // [TODO] 나머지 에러가 발생한 경우 경우 에러 안내 후 resume 을 재시도 합니다. - 반복해서 문제가 발생하는 경우 앱을 종료하도록 합니다. } } }); |
새로운 Intent 받기 설정 추가하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// 현재 액티비티에 새로운 intent 업데이트
this.setIntent(intent);
} |
로그인
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 로그인 UI를 사용하지 않는 로그인하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTApplication; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; // 로그인 하고자 하는 IdpCode 셋팅 KGTIdpProfile.KGTIdpCode code = KGTIdpCode.Kakao; // 특정 idp로 로그인 하기 KGTPlayer.login(activity, code, result -> { if (result.isSuccess()) { // IDP 로그인과 플랫폼 로그인 성공 // 플랫폼에서 발급한 현재 Player의 ID String playerId = KGTPlayer.getCurrentPlayer().getPlayerId(); // 플랫폼 액세스 토큰 String accessToken = KGTPlayer.getAccessToken(); // 현재 IDP 인증 정보를 가져옴 KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); // [TODO] 로그인 이 성공하였으므로 게임 화면으로 이동합니다. } else { // IDP 로그인 혹은 플랫폼 로그인 실패 // [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다. if (result.getCode() == KGTResult.KGTResultCode.NETWORK_FAILURE || result.getCode() == KGTResult.KGTResultCode.SERVER_TIMEOUT || result.getCode() == KGTResult.KGTResultCode.SERVER_CONNECTION_FAILED) { // [TODO] 네트워크 에러가 발생한 경우에는 로그인 재시도 요청 하여야 합니다. } else if (result.getCode() == KGTResult.KGTResultCode.USER_CANCELED) { // [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다. } else if (result.getCode() == KGTResult.KGTResultCode.BLOCKED_BY_POLICY) { // [TODO] 로그인이차단당한 성공하였으므로국가 게임코드 화면으로또는 이동합니다.IP }대역에서 else로그인을 { // IDP 로그인 혹은 플랫폼 로그인 실패시도하였습니다. 이에 대한 처리가 필요합니다. } else { // [TODO] 나머지 로그인에러가 실패발생한 시경우에는 사용자에러 안내 후 재로그인 시도재시도 하도록요청 하여야 합니다. - if (result.getCode() == KGTResult.KGTResultCode.NETWORK_FAILURE || result.getCode() == KGTResult.KGTResultCode.SERVER_TIMEOUT || result.getCode() == KGTResult.KGTResultCode.SERVER_CONNECTION_FAILED) { // [TODO] 네트워크 에러가 발생한 경우에는 로그인 재시도 요청 하여야 합니다. } else if (result.getCode() == KGTResult.KGTResultCode.FORBIDDEN) { 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } }); |
로그아웃
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 로그아웃 UI를 사용하지 않는 로그아웃하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; // 로그아웃 요청 KGTPlayer.logout(activity, false, result -> { if (result.isSuccess()) { // 로그아웃 성공 // [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 처리가 필요합니다. } else if (result.getCode() == KGTResult.KGTResultCode.USER_CANCELED) { // [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다. } else { 시작 화면으로 돌아가기 } else { // 로그아웃 실패 } }); |
탈퇴
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 탈퇴 UI를 사용하지 않는 탈퇴하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTResult; // 탈퇴 요청 KGTPlayer.unregister(activity, false, result -> { if (result.isSuccess()) { // 탈퇴 성공 // [TODO] 나머지시작 에러가화면으로 발생한돌아가기 경우에는 } 에러else 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } }); |
...
{
// 탈퇴 실패
}
}); |
계정 연결
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 계정 연결 UI를 사용하지 않는 계정 연결하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
| ||
import com.kakaogame.KGTPlayer; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTResult; // 로그인 하고자 하는 IdpCode 셋팅 KGTIdpProfile.KGTIdpCode code = KGTIdpCode.Kakao; // 특정 idp로 계정 연결 하기 KGTPlayer.connect(activity, code, result -> { if (result.isSuccess()) { // IDP 연결 성공 // Player ID 는 변경되지 않습니다. } else { // IDP 로그인 혹은 플랫폼 로그인 실패 연결 실패 if (result.getCode() == KGTResult.KGTResultCode.INVALID_PARAMETER) { // [TODO]잘못된 로그인인자가 실패전달 시된 사용자 안내 후 재 시도 하도록 하여야 합니다. 경우 // 예) activity 가 null } else if (result.getCode() == KGTResult.KGTResultCode.NETWORKNOT_FAILUREAUTHORIZED) { || result.getCode() == KGTResult.KGTResultCode.SERVER_TIMEOUT || // 현재 인증이 안되어 있는 경우 } else if (result.getCode() == KGTResult.KGTResultCode.SERVERINVALID_CONNECTION_FAILEDSTATE) { // [TODO]현재 네트워크인증 에러가된 발생한IDP 경우에는가 로그인기기 재시도인증이 요청아닌 하여야경우 합니다. } else if (result.getCode() == KGTResult.KGTResultCode.USER_CANCELED.KGTResultCode.ALREADY_USED_IDP_ACCOUNT) { // [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다. } else if (result.getCode() == KGTResult.KGTResultCode.BLOCKED_BY_POLICY) { // [TODO] 차단당한 국가 코드 또는 IP 대역에서 로그인을 시도하였습니다. 이에 대한 처리가 필요합니다. } else { // [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } }); |
로그아웃
...
기본 로그아웃 UI를 사용하는 로그아웃하기
...
이미 인증되어 있는 계정인 경우
} else {
// 기타 에러 발생
}
}
}); |
프로필
...
내 정보 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer;
KGTPlayer localPlayer = KGTPlayer.getCurrentPlayer(); |
내 IDP 정보 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTIdpProfile;
KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); |
시스템 정보
...
언어 코드 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String languageCode = KGTSystem.getLanguageCode(); |
언어 태그 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String languageCode = KGTSystem.getLanguageTag(); |
국가 코드 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String countryCode = KGTSystem.getCountryCode(); |
IP 기반 국가 코드 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayerKGTSystem; import com.kakaogame.KGTResult; // 로그아웃 요청 KGTPlayer.logout(activity, true, result -> { if (result.isSuccess()) { // 로그아웃 성공 // [TODO] 시작 화면으로 돌아가기 } else { // 로그아웃 실패 } }); |
기본 로그아웃 UI를 사용하지 않는 로그아웃하기
...
String countryCode = KGTSystem.getGeoCountryCode(); |
기기 아이디 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String deviceId = KGTSystem.getDeviceId(); |
기기 모델 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTResult;
// 로그아웃 요청
KGTPlayer.logout(activity, false, result -> {
if (result.isSuccess()) {
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
} else {
// 로그아웃 실패
}
}); |
탈퇴
계정 연결
...
기본 계정 연결 UI를 사용하는 계정 연결하기
...
.KGTSystem;
String deviceModel = KGTSystem.getDeviceModel(); |
OS 이름 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String osName = KGTSystem.getOSName(); |
네트워크 연결 여부 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayerKGTSystem; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTResult; KGTPlayer.connect(activity, result -> { if (result.isSuccess()) { // IDP 연결 성공 // Player ID 는 변경되지 않습니다. } else { // IDP 연결 실패 if (result.getCode() == KGTResult.KGTResultCode.INVALID_PARAMETER) { // 잘못된 인자가 전달 된 경우 // 예) activity 가 null } else if (result.getCode() == KGTResult.KGTResultCode.NOT_AUTHORIZED) { // 현재 로그인이 안되어 있는 경우 } else if (result.getCode() == KGTResult.KGTResultCode.INVALID_STATE) { // 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우 boolean networkConnected = KGTSystem.isNetworkConnected(); |
연결된 네트워크 타입 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String networkType = KGTSystem.getNetworkType(); |
카카오 연동 기능
...
카카오톡 게임 메시지 수신 여부 설정하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; // 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기 KGTKakaoTalk.showSetting(activity, result -> { if (result.isSuccess()) { // 카카오톡 게임 메시지 수신 여부 설정 성공 boolean allowMessage = result.getContent(); // 설정된 메시지 수신 허용 여부 } else if (result.getCode() == KGTResult.KGTResultCode.ALREADYNOT_USEDKAKAOTALK_IDP_ACCOUNTUSER) { // 이미 연결되어 있는 계정이 있는 경우 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else { // 기타 에러 발생 }카카오톡 게임 메시지 수신 여부 설정 실패 } }); |
...
카카오톡 프로필 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayerKGTKakaoTalk; import com.kakaogame.KGTIdpProfile; import com.kakaogame.KGTResultKGTKakaoTalkProfile; // 로그인카카오톡 하고자프로필 하는 IdpCode 셋팅 KGTIdpProfile.KGTIdpCode code = KGTIdpCode.Kakao; // 특정 idp로 계정 연결 하기 KGTPlayer.connect(activity, code, 조회하기 KGTKakaoTalk.talkProfile(result -> { if (result.isSuccess()) { // IDP 연결 성공 // Player ID 는 변경되지 않습니다. } else { // IDP 연결 실패 카카오톡 프로필 조회 성공 talkProfile = result.getContent(); // 로그인한 유저의 카카오톡 프로필 정보 } else if (result.getCode() == KGTResult.KGTResultCode.INVALIDNOT_KAKAOTALK_PARAMETERUSER) { // 잘못된 인자가 전달 된 경우 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else { // 예)카카오톡 activity프로필 가조회 null실패 } else if (result.getCode() == KGTResult.KGTResultCode.NOT_AUTHORIZED) { // 현재 인증이 안되어 있는 경우 } else } }); |
카카오톡 게임 친구 목록 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoFriendProfile; // 게임 친구 목록 조회하기 KGTKakaoTalk.friends(result -> { if (result.getCodeisSuccess() == KGTResult.KGTResultCode.INVALID_STATE) { // 현재카카오톡 인증게임 된친구 IDP목록 가조회 기기 인증이 아닌 경우 성공. }List<KGTPlayer> elsefriendList if= (result.getCodegetContent() == KGTResult.KGTResultCode.ALREADY_USED_IDP_ACCOUNT) { // 이미 인증되어 있는 계정인 경우 } else { // 기타 에러 발생 } } }); |
프로필
내 정보 조회하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer;
KGTPlayer localPlayer = KGTPlayer.getCurrentPlayer(); |
내 IDP 정보 조회하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTIdpProfile;
KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile(); |
결제를 위한 계정 정보 아이디 조회하기
...
; // 게임 친구 목록
for (KGTPlayer player : friendList) {
KGTKakaoFriendProfile kakaoProfile = (KGTKakaoFriendProfile)player.getIdpProfile();
}
} else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) {
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
} else {
// 카카오톡 게임 친구 목록 조회 실패
}
}); |
카카오톡 게임 메시지 보내기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTPlayerKGTKakaoFriendProfile; import com.kakaogame.KGTResultKGTKakaoTalk; import KGTPlayer.paymentUserId(result -> { if (result.isSuccess()) { // 요청 성공 String paymentUserId = result.getContent(); } else { // 요청 실패 } }); |
시스템 정보
언어 코드 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String languageCode = KGTSystem.getLanguageCode(); |
언어 태그 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String languageCode = KGTSystem.getLanguageTag(); |
국가 코드 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String countryCode = KGTSystem.getCountryCode(); |
IP 기반 국가 코드 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String countryCode = KGTSystem.getGeoCountryCode(); |
기기 아이디 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String deviceId = KGTSystem.getDeviceId(); |
기기 모델 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String deviceModel = KGTSystem.getDeviceModel(); |
OS 이름 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
String osName = KGTSystem.getOSName(); |
네트워크 연결 여부 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTSystem;
boolean networkConnected = KGTSystem.isNetworkConnected(); |
연결된 네트워크 타입 가져오기
...
com.kakaogame.KGTKakaoTalkProfile;
// friends API를 통해 가져온 친구 객체
KGTKakaoFriendProfile kakaoProfile; // 카카오 프로필(KGTKakaoFriendProfile 객체)
// [TODO] 템플릿 Id 설정
String templateId = "";
// [TODO] 메시지 템플릿에 설정한 인자 설정
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");
// 카카오톡 게임 메시지 보내기
KGTKakaoTalk.sendGameMessage(kakaoProfile, templateId, args, result -> {
if (result.isSuccess()) {
// 카카오톡 채팅 메시지 보내기 성공
} else {
if (result.getCode() == KGTResult.KGTResultCode.MESSAGE_SETTING_DISABLE) {
// 받은이가 메시지 수신 거부를 설정한 경우
} else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_DAILY_USAGE) {
// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
} else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) {
// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
} else {
// 카카오톡 채팅 메시지 보내기 실패
}
}
}); |
카카오톡 친구 초대 메시지 전송하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTSystem; String networkType = KGTSystem.getNetworkType(); |
카카오 연동 기능
카카오톡 게임 메시지 수신 여부 설정하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk com.kakaogame.KGTKakaoTalkProfile; import com.kakaogame.KGTKakaoUser; // [TODO] 팝업창으로 띄울지 여부 설정 boolean isSingle = true; // [TODO] 팝업창으로 띄울지 여부 설정 boolean isPopup = true; // [TODO] 템플릿 Id 설정 String templateId = ""; // 카카오톡[TODO] 게임메시지 메시지템플릿에 수신설정한 여부 설정 뷰 띄우기 KGTKakaoTalk.showSetting(activity인자 설정 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()) { // 카카오톡 게임초대 메시지 수신 여부 설정보내기 성공 boolean allowMessage = result.getContent(); // 설정된 메시지 수신 허용 여부 } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USERfor (KGTKakaoUser kakaoUser : result.getContent()) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. 초대 메시지를 전송한 유저 목록 확인 } } else { // 카카오톡전부 게임실패한 메시지경우(공통된 수신원인 여부리턴해주기 설정필요) 실패 } }); |
카카오톡 프로필 조회하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoTalkProfile; // 카카오톡 프로필 조회하기 KGTKakaoTalk.talkProfile(result -> { if (result.getCode() == KGTResult.KGTResultCode.MESSAGE_SETTING_DISABLE) { // 받은이가 메시지 수신 거부를 설정한 경우 } else if (result.isSuccessgetCode() == KGTResult.KGTResultCode.EXCEED_DAILY_USAGE) { // 카카오톡한명이 프로필특정 조회앱에 성공대해 talkProfile = result.getContent(); // 로그인한 유저의 카카오톡 프로필 정보 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생 } else if (result.getCode() == KGTResult.KGTResultCode.NOTEXCEED_KAKAOTALKMONTHLY_USERUSAGE) { // 로그인한명이 한특정 유저가앱에 '카카오톡'대해 유저가특정인에게 아닙니다.보낼 카카오수 스토리만있는 가입한한달 유저의쿼터 계정과초과시 같이 카카오톡 유저가 아닌 경우. 발생 } else { // 카카오톡 프로필초대 메시지 조회보내기 실패 } } }); |
카카오톡
...
채널 추가하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoFriendProfile; // 게임 친구 목록 조회하기 KGTKakaoTalk.friends(result -> { if (result.isSuccess()) { // 카카오톡 게임 친구 목록 조회 성공. List<KGTPlayer> friendList = result.getContent();; // 게임[TODO] 친구채널 목록Id for (KGTPlayer player : friendList) { KGTKakaoFriendProfile kakaoProfile = (KGTKakaoFriendProfile)player.getIdpProfile(); } 설정 int channelId = 0; KGTKakaoTalk.addChannel(plusFriendId, result -> { if (result.isSuccess()) { // 채널 추가 성공 } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else { // 카카오톡 게임 친구 목록 조회채널 추가 실패 } }); |
...
내 초대 메시지로 가입한 친구 목록 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoFriendProfileKGTKakaoInvitation; import com.kakaogame.KGTKakaoTalkKGTPlayer; import com.kakaogame.KGTKakaoTalkProfileKGTKakaoFriendProfile; // friends[TODO] API를이벤트 통해Id 가져온설정 친구int 객체eventId KGTKakaoFriendProfile= kakaoProfile0; // 카카오 프로필(KGTKakaoFriendProfile 객체) // [TODO] 템플릿 Id 설정 String templateId = ""; // [TODO] 메시지 템플릿에 설정한 인자 설정 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"); // 카카오톡 게임 메시지 보내기 KGTKakaoTalk.sendGameMessage(kakaoProfile, templateId, args, result -> { if (result.isSuccess()) { // 카카오톡 채팅 메시지 보내기 성공 } else { if (result.getCode() == KGTResult.KGTResultCode.MESSAGE_SETTING_DISABLE) { // 받은이가 메시지 수신 거부를 설정한 경우 } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_DAILY_USAGE) { // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생 } else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) { // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생 } else { // 카카오톡 채팅 메시지 보내기 실패 } } }); |
카카오톡 친구 초대 메시지 전송하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk;
import com.kakaogame.KGTKakaoTalkProfile;
import com.kakaogame.KGTKakaoUser;
// [TODO] 팝업창으로 띄울지 여부 설정
boolean isSingle = true;
// [TODO] 팝업창으로 띄울지 여부 설정
boolean isPopup = true;
// [TODO] 템플릿 Id 설정
String templateId = "";
// [TODO] 메시지 템플릿에 설정한 인자 설정
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()) {
// 카카오톡 초대 메시지 보내기 성공
for (KGTKakaoUser kakaoUser : result.getContent()) {
// 유저가 초대 메시지를 전송한 유저 목록 확인
}
} else {
// 전부 실패한 경우(공통된 원인 리턴해주기 필요)
if (result.getCode() == KGTResult.KGTResultCode.MESSAGE_SETTING_DISABLE) {
// 받은이가 메시지 수신 거부를 설정한 경우
} else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_DAILY_USAGE) {
// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
} else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) {
// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
} else {
// 카카오톡 초대 메시지 보내기 실패
}
}
}); |
카카오톡 채널 추가하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTKakaoTalk; // [TODO] 채널 Id 설정 int channelId = 0; KGTKakaoTalk.addChannel(plusFriendId, result -> { if (result.isSuccess()) { // 채널 추가 성공 내가 초대한 플레이어 목록 조회하기 KGTKakaoInvitation.joiners(eventId, result -> { if (result.isSuccess()) { // 호출 성공 // 내가 초대한 플레이어 목록 가져오기 KGTKakaoInvitation.KGTInvitationJoinersResponse joinersResponse = result.getContent(); // 앱에 가입한 플레이어 목록, 앱 탈퇴자 포함 List<KGTPlayer> joiners = joinersResponse.getPlayers(); if (joiners.isEmpty()) { // 앱에 가입한 유저 없음 } else { // 앱에 가입한 유저 있음 for (KGTPlayer player : joiners) { // 수신자의 플레이어 아이디 String playerId = player.getPlayerId(); KGTKakaoFriendProfile kakaoProfile = (KGTKakaoFriendProfile) player.getIdpProfile(); // 수신자의 닉네임 String nickname = kakaoProfile.getNickname(); // 수신자의 프로필 썸네일 이미지 String thumbnailImageUrl = kakaoProfile.getThumbnailImageUrl(); // 수신지의 탈퇴 이력 조회. UI상에서 탈퇴 여부 정보를 표시할 경우 해당 flag를 사용. boolean isUnregistered = kakaoProfile.isUnregistered(); } } } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정과계정) 같이 카카오톡 유저가 아닌 경우. } else { // 채널 추가 실패 // 호출 실패 } }); |
구글 게임
...
내가 초대 메시지를 보낸 친구 숫자 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements;
// 구글 게임 업적 정보 화면 보여주기
KGTGoogleGamesAchievements.showAchievement(activity); |
업적 달성
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements;
// [TODO] 업적 아이디 설정
String id = "";
// 업적 달성
KGTGoogleGamesAchievements.unlock(id); |
업적 노출하기
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements;
// [TODO] 업적 아이디 설정
String id = "";
KGTGoogleGamesAchievements.reveal(id); |
업적 단계 증가
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements;
// [TODO] 업적 아이디 설정
String id = "";
int numSteps = 0;
KGTGoogleGamesAchievements.setSteps(id, numSteps); |
업적 단계 설정
...
코드 블럭 | ||
---|---|---|
| ||
import com.kakaogame.KGTGoogleGamesAchievements; // [TODO] 업적 아이디 설정 String id = ""; int numSteps = 0; KGTGoogleGamesAchievements.increment(id, numStepskakaogame.KGTKakaoInvitation; // [TODO] 이벤트 Id 설정 int eventId = 0; // 내가 초대한 플레이어 명 수 조회하기 KGTKakaoInvitation.receiversCount(eventId, result -> { if (result.isSuccess()) { // 호출 성공 // 내가 초대한 친수 명 수 가져오기 KGTInvitationReceviersCountResponse response = result.getContent(); int total = response.getTotalReceiversCount(); int joinersCount = response.getJoinersCount(); } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정) } else { // 호출 실패 } }); |