버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.
목차

...

...

style

...

none

...

초기화 및 상태변화 이벤트 처리

...

SDK 초기화

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_init_sdk
nopaneltrue

코드 블럭
languagejava
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) 하기

...

코드 블럭
languagejava
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 KGTApplication.initSDK(this, config);

스타트 (Start) 하기

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_start
nopaneltrue

코드 블럭
languagejava
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] 자동로그인이 안 된 경우 로그인 화면으로 이동 합니다.
		}
	} 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] 실패나머지 에러가 경우발생한 -경우에는 초기화가에러 실패한안내 경우 이므로 스타트를스타트 재시도 하거나요청 앱을 종료 하여야 합니다. 		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 하기

...

- 문제가 반복해서 발생하는 경우 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

Pause 하기

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_pause
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTApplication;
import com.kakaogame.KGTResult;
 
KGTApplication.pause(activity, result -> {
	//
});

Resume 하기

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_pauseresume
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTApplication;
import com.kakaogame.KGTResult;
 
KGTApplication.pauseresume(activity, result -> {
	//
});

Resume 하기

...

코드 블럭
languagejava
import com.kakaogame.KGTApplication;
import com.kakaogame.KGTResult;
 
KGTApplication.resume(activity, result -> {
	if (result.isSuccess()) {
		// [TODO] resume이 성공 한 경우 게임 화면을 재개합니다.
	} else {
	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 받기 설정 추가하기

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_android_intent
nopaneltrue

코드 블럭
languagejava
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
     
    // 현재 액티비티에 새로운 intent 업데이트
    this.setIntent(intent);
}

로그인

...

발췌문 삽입
로그인 SDK 예제
로그인 SDK 예제
namelogin
nopaneltrue

기본 로그인 UI를

...

사용하지 않는 로그인하기

발췌문 삽입
로그인 SDK 예제
로그인 SDK 예제
namelogin_custom
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTApplication;
import com.kakaogame.KGTIdpProfile;
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTResult;

KGTPlayer.login(activity, result -> // 로그인 하고자 하는 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.getCurrentPlayer().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.FORBIDDENUSER_CANCELED) {
			// [TODO] CBT기간동안사용자가 허용된로그인 유저외에는진행 인증이 불가능취소한 상황이므로 로그인 있습니다.화면을 유저에게유지 안내메시지하여야 처리가합니다.
필요합니다.
		} else if (result.getCode() == KGTResult.KGTResultCode.USERBLOCKED_BY_CANCELEDPOLICY) {
			// [TODO] 사용자가차단당한 국가 로그인코드 진행또는 IP 취소한대역에서 상황이므로로그인을 로그인시도하였습니다. 화면을이에 유지대한 하여야처리가 합니다필요합니다.
		} else {
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

로그아웃

...

발췌문 삽입
로그아웃 SDK 예제

...

로그아웃 SDK 예제
namelogout
nopaneltrue

기본 로그아웃 UI를 사용하지 않는

...

로그아웃하기

발췌문 삽입
로그인 로그아웃 SDK 예제로그인
로그아웃 SDK 예제
nameloginlogout_custom
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTApplicationKGTPlayer;
import com.kakaogame.KGTIdpProfileKGTResult;
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTResult;

// 로그인 하고자 하는 IdpCode 셋팅
KGTIdpProfile.KGTIdpCode code = KGTIdpCode.Kakao;

// 특정 idp로 로그인 하기
KGTPlayer.login
// 로그아웃 요청
KGTPlayer.logout(activity, codefalse, result -> {
	if (result.isSuccess()) {
		// IDP 로그인과 플랫폼 로그인 로그아웃 성공

		// 플랫폼에서 발급한 현재 Player의 ID[TODO] 시작 화면으로 돌아가기
	} else {
		String// playerId로그아웃 = KGTPlayer.getCurrentPlayer().getPlayerId();

		// 플랫폼 액세스 토큰
		String accessToken = KGTPlayer.getAccessToken();
실패
	}
});

탈퇴

...

발췌문 삽입
탈퇴 SDK 예제
탈퇴 SDK 예제
nameunregister
nopaneltrue

기본 탈퇴 UI를 사용하지 않는 탈퇴하기

발췌문 삽입
탈퇴 SDK 예제
탈퇴 SDK 예제
nameunregister_custom
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTResult;

// 탈퇴 요청
KGTPlayer.unregister(activity, false, result -> {
	if (result.isSuccess()) {
		// 현재 IDP 인증 정보를 가져옴
		KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile();

		탈퇴 성공

		// [TODO] 로그인 이 성공하였으므로 게임시작 화면으로 이동합니다.돌아가기
	} else {
		// IDP탈퇴 로그인실패 혹은 플랫폼 로그인 실패
	}
});

계정 연결

...

발췌문 삽입
계정 연결 SDK 예제
계정 연결 SDK 예제
nameconnect
nopaneltrue

기본 계정 연결 UI를 사용하지 않는 계정 연결하기

발췌문 삽입
계정 연결 SDK 예제
계정 연결 SDK 예제
nameconnect_custom
nopaneltrue

코드 블럭
languagejava
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 {
		// [TODO]IDP 로그인연결 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.

		

		if (result.getCode() == KGTResult.KGTResultCode.INVALID_PARAMETER) {
			// 잘못된 인자가 전달 된 경우
			// 예) 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.ALREADY_USED_IDP_ACCOUNT) {
			// [TODO]이미 사용자가인증되어 로그인있는 진행계정인 경우
취소한		} 상황이므로else 로그인 화면을 유지 하여야 합니다.{
			// 기타 에러 발생
		}
else if (result.getCode() == KGTResult.KGTResultCode.BLOCKED_BY_POLICY) {
			// [TODO] 차단당한 국가 코드 또는 IP 대역에서 로그인을 시도하였습니다. 이에 대한 처리가 필요합니다.
		} else {
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

로그아웃

...

기본 로그아웃 UI를 사용하는 로그아웃하기

...

	}
});

프로필

...

내 정보 조회하기

발췌문 삽입
프로필 SDK 예제
프로필 SDK 예제
nameplayer_currentPlayer
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayer;

KGTPlayer localPlayer = KGTPlayer.getCurrentPlayer();

내 IDP 정보 조회하기

발췌문 삽입
프로필 SDK 예제
프로필 SDK 예제
nameplayer_idpProfile
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTIdpProfile;

KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile();

시스템 정보

...

언어 코드 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_language_code
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String languageCode = KGTSystem.getLanguageCode();

언어 태그 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_language_tag
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String languageCode = KGTSystem.getLanguageTag();

국가 코드 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_country_code
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String countryCode = KGTSystem.getCountryCode();

IP 기반 국가 코드 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_geo_country_code
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayerKGTSystem;
import com.kakaogame.KGTResult;

// 로그아웃 요청
KGTPlayer.logout(activity, true, result -> {
	if (result.isSuccess()) {
		// 로그아웃 성공

		// [TODO] 시작 화면으로 돌아가기
	} else {
		// 로그아웃 실패
	}
});

기본 로그아웃 UI를 사용하지 않는 로그아웃하기

...


String countryCode = KGTSystem.getGeoCountryCode();

기기 아이디 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_device_id
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String deviceId = KGTSystem.getDeviceId();

기기 모델 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_device_model
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String deviceModel = KGTSystem.getDeviceModel();

OS 이름 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_os_name
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayerKGTSystem;
import com.kakaogame.KGTResult;

// 로그아웃 요청
KGTPlayer.logout(activity, false, result -> {
	if (result.isSuccess()) {
		// 로그아웃 성공

		// [TODO] 시작 화면으로 돌아가기
	} else {
		// 로그아웃 실패
	}
});

탈퇴

계정 연결

...

기본 계정 연결 UI를 사용하는 계정 연결하기

...


String osName = KGTSystem.getOSName();

네트워크 연결 여부 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_is_network_connected
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

boolean networkConnected = KGTSystem.isNetworkConnected();

연결된 네트워크 타입 가져오기

발췌문 삽입
시스템 정보 SDK 예제
시스템 정보 SDK 예제
namesystem_network_type
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String networkType = KGTSystem.getNetworkType();

카카오 연동 기능

...

카카오톡 게임 메시지 수신 여부 설정하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_show_setting
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTIdpProfile;
import com.kakaogame.KGTResult;

KGTPlayer.connectKGTKakaoTalk;

// 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기
KGTKakaoTalk.showSetting(activity, result -> {
	if (result.isSuccess()) {
		// IDP 연결 성공 {
		// 카카오톡 Player게임 메시지 ID수신 여부 변경되지설정 않습니다.성공
	} else {
		// IDP 연결 실패

			boolean allowMessage = result.getContent(); // 설정된 메시지 수신 허용 여부
	} else if (result.getCode() == KGTResult.KGTResultCode.INVALIDNOT_KAKAOTALK_PARAMETER) {
			// 잘못된 인자가 전달 된 경우
			// 예) activity 가 null
		} else if (result.getCode() == KGTResult.KGTResultCode.NOT_AUTHORIZED) {
			// 현재 로그인이 안되어 있는 경우
		} else if (result.getCode() == KGTResult.KGTResultCode.INVALID_STATE) {
			// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
		USER) {
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
		// 카카오톡 게임 메시지 수신 여부 설정 실패
	}
});

카카오톡 프로필 조회하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_talk_profile
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTKakaoTalk;
import com.kakaogame.KGTKakaoTalkProfile;

// 카카오톡 프로필 조회하기
KGTKakaoTalk.talkProfile(result -> {
	if (result.isSuccess()) {
		// 카카오톡 프로필 조회 성공
		talkProfile = result.getContent(); // 로그인한 유저의 카카오톡 프로필 정보
	} else if (result.getCode() == KGTResult.KGTResultCode.ALREADYNOT_USEDKAKAOTALK_IDP_ACCOUNTUSER) {
			// 이미 연결되어 있는 계정이 있는 경우
		 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
			// 기타카카오톡 에러프로필 발생조회 		}실패
	}
});

...

카카오톡 게임 친구 목록 조회하기

발췌문 삽입
계정 연결 카카오 연동 기능 SDK 예제계정 연결
카카오 연동 기능 SDK 예제
nameconnectkakao_talk_customfriends
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayerKGTKakaoTalk;
import com.kakaogame.KGTIdpProfile;
import com.kakaogame.KGTResultKGTKakaoFriendProfile;

// 로그인게임 하고자 하는 IdpCode 셋팅
KGTIdpProfile.KGTIdpCode code = KGTIdpCode.Kakao;

// 특정 idp로 계정 연결 하기
KGTPlayer.connect(activity, code, 친구 목록 조회하기
KGTKakaoTalk.friends(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 가 기기 인증이 아닌 경우
	친구 목록 조회 성공.
		List<KGTPlayer> friendList = result.getContent(); // 게임 친구 목록
		
		for (KGTPlayer player : friendList) {
            KGTKakaoFriendProfile kakaoProfile = (KGTKakaoFriendProfile)player.getIdpProfile();
        }
	} else if (result.getCode() == KGTResult.KGTResultCode.ALREADYNOT_USEDKAKAOTALK_IDP_ACCOUNTUSER) {
			// 이미 인증되어 있는 계정인 경우
		 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
			// 카카오톡 기타게임 친구 에러목록 발생조회 		}실패
	}
});

프로필

...

카카오톡 게임 메시지 보내기

발췌문 삽입
발췌문 삽입
프로필 카카오 연동 기능 SDK 예제프로필
카카오 연동 기능 SDK 예제
nameplayer_currentPlayer
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayer;

KGTPlayer localPlayer = KGTPlayer.getCurrentPlayer();

내 IDP 정보 조회하기

프로필 SDK 예제프로필 SDK 예제nameplayer_idpProfilekakao_talk_send_game_message
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTIdpProfile;

KGTIdpProfile idpProfile = KGTPlayer.getCurrentPlayer().getIdpProfile();

시스템 정보

언어 코드 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String languageCode = KGTSystem.getLanguageCode();

언어 태그 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String languageCode = KGTSystem.getLanguageTag();

국가 코드 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String countryCode = KGTSystem.getCountryCode();

IP 기반 국가 코드 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String countryCode = KGTSystem.getGeoCountryCode();

기기 아이디 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String deviceId = KGTSystem.getDeviceId();

기기 모델 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String deviceModel = KGTSystem.getDeviceModel();

OS 이름 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String osName = KGTSystem.getOSName();

네트워크 연결 여부 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

boolean networkConnected = KGTSystem.isNetworkConnected();

연결된 네트워크 타입 가져오기

...

코드 블럭
languagejava
import com.kakaogame.KGTSystem;

String networkType = KGTSystem.getNetworkType();

카카오 연동 기능

...

kakaogame.KGTKakaoFriendProfile;
import com.kakaogame.KGTKakaoTalk;
import 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 {
			// 카카오톡 채팅 메시지 보내기 실패
		}
	}
});

카카오톡 친구 초대 메시지 전송하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_showsend_invite_settingmessage
nopaneltrue

코드 블럭

...

import com.kakaogame.KGTKakaoTalk; import com.kakaogame.KGTKakaoTalkProfile; // 카카오톡 프로필 조회하기 KGTKakaoTalk.talkProfile(
코드 블럭
languagejava
languagejava
import com.kakaogame.KGTKakaoTalk;

// 카카오톡 게임 메시지 수신 여부 설정 뷰 띄우기
KGTKakaoTalk.showSetting(activity, result -> {
	if (result.isSuccess()) {
		// 카카오톡 게임 메시지 수신 여부 설정 성공
		boolean allowMessage = result.getContent(); // 설정된 메시지 수신 허용 여부
	} else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) {
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
		// 카카오톡 게임 메시지 수신 여부 설정 실패
	}
});

카카오톡 프로필 조회하기

...

java
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()) {
		// 카카오톡 프로필 조회 성공
		talkProfile = result.getContent(); // 로그인한 유저의 카카오톡 프로필 정보
	} else 
			// 유저가 초대 메시지를 전송한 유저 목록 확인
		}
	} else {
		// 전부 실패한 경우(공통된 원인 리턴해주기 필요)
		if (result.getCode() == KGTResult.KGTResultCode.NOTMESSAGE_KAKAOTALKSETTING_USERDISABLE) {
			// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
		// 카카오톡 프로필 조회 실패
	}
});

카카오톡 게임 친구 목록 조회하기

...

코드 블럭
languagejava
import com.kakaogame.KGTKakaoTalk;
import com.kakaogame.KGTKakaoFriendProfile;

// 게임 친구 목록 조회하기
KGTKakaoTalk.friends(result -> {
	if (result.isSuccess()) {
		// 카카오톡 게임 친구 목록 조회 성공.
		List<KGTPlayer> friendList = result.getContent(); // 게임 친구 목록
		
		for (KGTPlayer player : friendList) {
            KGTKakaoFriendProfile kakaoProfile = (KGTKakaoFriendProfile)player.getIdpProfile();
        }받은이가 메시지 수신 거부를 설정한 경우
		} else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_DAILY_USAGE) {
			// 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생
		} else if (result.getCode() == KGTResult.KGTResultCode.EXCEED_MONTHLY_USAGE) {
			// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
		} else {
			// 카카오톡 초대 메시지 보내기 실패
		}
	}
});

카카오톡 채널 추가하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_add_plus_friend
nopaneltrue

코드 블럭
languagejava
import com.kakaogame.KGTKakaoTalk;

// [TODO] 채널 Id 설정
int channelId = 0;

KGTKakaoTalk.addChannel(plusFriendId, result -> {
	if (result.isSuccess()) {
		// 채널 추가 성공
	} else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) {
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
		// 카카오톡채널 게임 친구 목록 조회 추가 실패
	}
});

...

내 초대 메시지로 가입한 친구 목록 조회하기

발췌문 삽입
카카오 연동 기능 SDK 예제
카카오 연동 기능 SDK 예제
namekakao_talk_send_game_messageinvitation_joiners
nopaneltrue

코드 블럭
languagejava
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 {
			// 카카오톡 채팅 메시지 보내기 실패
		}
	}
});

카카오톡 친구 초대 메시지 전송하기

...

코드 블럭
languagejava
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 {
			// 카카오톡 초대 메시지 보내기 실패
		}
	}
});

카카오톡 채널 추가하기

...

코드 블럭
languagejava
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 {
		// 채널 추가 실패
	
        // 호출 실패
    }
});

구글 게임

...

내가 초대 메시지를 보낸 친구 숫자 조회하기

발췌문 삽입
구글 게임 카카오 연동 기능 SDK 예제구글 게임
카카오 연동 기능 SDK 예제
namegooglekakao_gamesinvitation_showreceivers_achievement_viewcount
nopaneltrue

import com.kakaogame.KGTGoogleGamesAchievements;
코드 블럭
languagejava
java
import com.kakaogame.KGTKakaoInvitation;

// [TODO] 이벤트 Id 설정
int eventId = 0;

// 내가 초대한 플레이어 명 수 조회하기
KGTKakaoInvitation.receiversCount(eventId, result -> {
    if (result.isSuccess()) {
        // 구글호출 게임 업적성공
정보 화면 보여주기 KGTGoogleGamesAchievements.showAchievement(activity);

업적 달성

...

코드 블럭
languagejava
import com.kakaogame.KGTGoogleGamesAchievements;     // [TODO] 업적 아이디 설정
String id = "";

// 업적 달성
KGTGoogleGamesAchievements.unlock(id);

업적 노출하기

...

코드 블럭
languagejava
import com.kakaogame.KGTGoogleGamesAchievements;

// [TODO] 업적 아이디 설정
String id = "";

KGTGoogleGamesAchievements.reveal(id);

업적 단계 증가

...

코드 블럭
languagejava
import com.kakaogame.KGTGoogleGamesAchievements;

// [TODO] 업적 아이디 설정
String id = "";
int numSteps = 0;

KGTGoogleGamesAchievements.setSteps(id, numSteps);

업적 단계 설정

...

코드 블럭
languagejava
import com.kakaogame.KGTGoogleGamesAchievements;

// [TODO] 업적 아이디 설정
String id = "";
int numSteps = 0;

KGTGoogleGamesAchievements.increment(id, numSteps내가 초대한 친수 명 수 가져오기
        KGTInvitationReceviersCountResponse response = result.getContent(); 

        int total = response.getTotalReceiversCount();
        int joinersCount = response.getJoinersCount();
    } else if (result.getCode() == KGTResult.KGTResultCode.NOT_KAKAOTALK_USER) {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. (예 : 카카오 스토리만 가입한 유저의 계정)
    } else {
        // 호출 실패
    }
});