메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

You are viewing an old version of this content. View the current version.

현재와 비교 View Version History

버전 1 다음 »


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


SDK 초기화

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_초기화 및 상태변화 이벤트 처리 SDK 예제'.

import com.kakaogame.KGTApplication;
import com.kakaogame.KGTConfig;

/**
 * 단일 앱으로 사용하는 경우
 */
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
);

/**
 * 앱 그룹을 사용하는 경우
 */
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 'KS4GFC:EN_초기화 및 상태변화 이벤트 처리 SDK 예제'.

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] 나머지 에러가 발생한 경우에는 에러 안내 후 스타트 재시도 요청 하여야 합니다. - 문제가 반복해서 발생하는 경우 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

Pause 하기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_초기화 및 상태변화 이벤트 처리 SDK 예제'.

import com.kakaogame.KGTApplication;
import com.kakaogame.KGTResult;
 
KGTApplication.pause(activity, result -> {
	//
});

Resume 하기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_초기화 및 상태변화 이벤트 처리 SDK 예제'.

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 받기 설정 추가하기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_초기화 및 상태변화 이벤트 처리 SDK 예제'.

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

로그인


매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_로그인 SDK 예제'.

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_로그인 SDK 예제'.

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 {
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

로그아웃


매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_로그아웃 SDK 예제'.

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_로그아웃 SDK 예제'.

import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTResult;

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

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

탈퇴


계정 연결


매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_계정 연결 SDK 예제'.

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_계정 연결 SDK 예제'.

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) {
			// 잘못된 인자가 전달 된 경우
			// 예) activity 가 null
		} else if (result.getCode() == KGTResult.KGTResultCode.NOT_AUTHORIZED) {
			// 현재 인증이 안되어 있는 경우
		} else if (result.getCode() == KGTResult.KGTResultCode.INVALID_STATE) {
			// 현재 인증 된 IDP 가 기기 인증이 아닌 경우
		} else if (result.getCode() == KGTResult.KGTResultCode.ALREADY_USED_IDP_ACCOUNT) {
			// 이미 인증되어 있는 계정인 경우
		} else {
			// 기타 에러 발생
		}
	}
});

프로필


내 정보 조회하기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_프로필 SDK 예제'.

import com.kakaogame.KGTPlayer;

KGTPlayer localPlayer = KGTPlayer.getCurrentPlayer();

내 IDP 정보 조회하기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_프로필 SDK 예제'.

import com.kakaogame.KGTPlayer;
import com.kakaogame.KGTIdpProfile;

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

시스템 정보


언어 코드 가져오기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String languageCode = KGTSystem.getLanguageCode();

언어 태그 가져오기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String languageCode = KGTSystem.getLanguageTag();

국가 코드 가져오기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String countryCode = KGTSystem.getCountryCode();

IP 기반 국가 코드 가져오기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String countryCode = KGTSystem.getGeoCountryCode();

기기 아이디 가져오기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String deviceId = KGTSystem.getDeviceId();

기기 모델 가져오기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String deviceModel = KGTSystem.getDeviceModel();

OS 이름 가져오기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String osName = KGTSystem.getOSName();

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

boolean networkConnected = KGTSystem.isNetworkConnected();

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_시스템 정보 SDK 예제'.

import com.kakaogame.KGTSystem;

String networkType = KGTSystem.getNetworkType();

카카오 연동 기능


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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_카카오 연동 기능 SDK 예제'.

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 {
		// 카카오톡 게임 메시지 수신 여부 설정 실패
	}
});

카카오톡 프로필 조회하기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_카카오 연동 기능 SDK 예제'.

import com.kakaogame.KGTKakaoTalk;
import com.kakaogame.KGTKakaoTalkProfile;

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

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_카카오 연동 기능 SDK 예제'.

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.NOT_KAKAOTALK_USER) {
		// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
	} else {
		// 카카오톡 게임 친구 목록 조회 실패
	}
});

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_카카오 연동 기능 SDK 예제'.

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

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

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_카카오 연동 기능 SDK 예제'.

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

카카오톡 채널 추가하기

매크로 처리 오류 'excerpt-include' : No link could be created for 'KS4GFC:EN_카카오 연동 기능 SDK 예제'.

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 {
		// 채널 추가 실패
	}
});

구글 게임


업적 달성 화면 보여주기

매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'KS4GFC:EN_구글 게임 SDK 예제'.

import com.kakaogame.KGTGoogleGamesAchievements;

// 구글 게임 업적 정보 화면 보여주기
KGTGoogleGamesAchievements.showAchievement(activity);

업적 달성

매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'KS4GFC:EN_구글 게임 SDK 예제'.

import com.kakaogame.KGTGoogleGamesAchievements;

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

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

업적 노출하기

매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'KS4GFC:EN_구글 게임 SDK 예제'.

import com.kakaogame.KGTGoogleGamesAchievements;

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

KGTGoogleGamesAchievements.reveal(id);

업적 단계 증가

매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'KS4GFC:EN_구글 게임 SDK 예제'.

import com.kakaogame.KGTGoogleGamesAchievements;

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

KGTGoogleGamesAchievements.setSteps(id, numSteps);

업적 단계 설정

매크로 처리 오류 'excerpt-include' : User 'null' does not have permission to view the page 'KS4GFC:EN_구글 게임 SDK 예제'.

import com.kakaogame.KGTGoogleGamesAchievements;

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

KGTGoogleGamesAchievements.increment(id, numSteps);
  • 레이블 없음

0 댓글

로그인 상태가 아닙니다. 변경하는 경우 익명으로 표기됩니다. 이미 계정이 있다면 로그인을 원하실 수 있습니다.