목차 |
---|
...
|
...
|
...
|
...
|
...
|
...
초기화 및 상태변화 이벤트 처리
...
SDK 초기화
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTApplication.InitSDK(); |
스타트 (Start) 하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTApplication.Start((result) => { if (result.IsSuccess) { // Start 성공 if (KGTPlayer.IsLoggedIn) { // 자동 로그인 성공 // 플랫폼에서 발급한 현재 Player의 ID string playerId = KGTPlayer.CurrentPlayer.PlayerId; // 플랫폼 액세스 토큰 string accessToken = KGTPlayer.AccessToken; // 현재 IDP 인증 정보를 가져옴 var idpProfile = KGTPlayer.CurrentPlayer.IdpProfile; // [TODO] 게임 서버 로그인 및 게임 화면으로 이동 } else { // 자동 로그인 정보 없음, 로그인 API 호출 } } else { if (result.code == KGTResultCode.NetworkFailure || result.code == KGTResultCode.ServerTimeout || result.code == KGTResultCode.ServerConnectionFailed) { // [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도 } else { // [TODO] 유저에게 에러가 발생했음을 알림. 에러 원인 추적을 위해 에러코드도 포함된 문구이면 좋음. } } }); |
...
Pause 하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; private string GetSelectedAppId() { // 사용자가 선택한 appId 또는 이미 사용자가 선택한 appId를 리턴로직을 게임이 구현 return appId; } string appId = GetSelectedAppId(); KGTApplication.Start(appId, (result) => { if (result.IsSuccess) { // appDelegate의 백그라운드 이동 함수에서 구현 // [주의] OnApplicationPause 구현합니다. // [주의] OnApplicationFocus에서는 구현하지 않도록 합니다. void OnApplicationPause(bool paused) { // 게임이 백그라운드로 이동되었을 때 실행해야 할 메소드 // Pause API는 항상 성공을 반환합니다. // Start따라서 게임에서 성공별도로 result를 체크하지 않으셔도 됩니다. if (KGTPlayer.IsLoggedInpaused) { KGTApplication.Pause((result) => {}); // 자동 로그인 성공 // 플랫폼에서 발급한 현재 Player의 ID string playerId = KGTPlayer.CurrentPlayer.PlayerId; // 플랫폼 액세스 토큰} } |
Resume 하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // appDelegate의 백그라운드 이동 함수에서 구현 // [주의] OnApplicationPause 구현합니다. // [주의] OnApplicationFocus에서는 구현하지 않도록 합니다. void OnApplicationPause(bool paused) { if (!paused) // 포그라운드로 이동한 상태 { // 게임이 포그라운드로 이동되었을 때 실행해야 할 메소드 KGTApplication.Resume((result) => string accessToken = KGTPlayer.AccessToken; { // 현재 IDP 인증 정보를 가져옴if (result.IsSuccess) { var idpProfile = KGTPlayer.CurrentPlayer.IdpProfile; // [TODO] 게임resume이 서버성공 로그인한 및경우 게임 화면으로화면을 이동재개합니다. } } else else { // 자동 로그인 정보 없음, 로그인 API 호출 } } else{ // [TODO] resume이 실패 한 경우 인증 실패 면 로그인 화면으로, 그외의 경우는 에러 팝업을 띄우고 재시도 여부를 확인합니다. { if (result.code == KGTResultCode.NetworkFailureAuthFailure || result.code == KGTResultCode.ServerTimeoutIdpAuthFailure) || result.code == KGTResultCode.ServerConnectionFailed) { { // [TODO] 네트워크인증 에러가실패의 발생한경우 경우에는시작 유저에게화면으로 네트워크이동해서 이슈로다시 스타트에 실패했음을 알리고 재시도신규 로그인 flow를 수행합니다. } else { // [TODO] 유저에게나머지 에러가 발생했음을 알림. 에러 원인 추적을 위해 에러코드도 포함된 문구이면 좋음. 발생한 경우 경우 에러 안내 후 resume 을 재시도 합니다. } } }); |
...
}
} |
윈도우즈 환경에서 자동로그인 설정하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // appDelegate의자동로그인사용 백그라운드유무를 이동세팅, 함수에서세팅하지 구현않으면 // [주의] OnApplicationPause 구현합니다.사용하지 않음 상태로 세팅 // [주의]자동로그인사용설정으로 OnApplicationFocus에서는로그인이 구현하지성공하면 않도록자동로그인정보가 합니다.생성됨 void OnApplicationPause(bool paused) { // 게임이 백그라운드로 이동되었을 때 실행해야 할 메소드 // Pause API는 항상 성공을 반환합니다. // 따라서 게임에서 별도로 result를 체크하지 않으셔도 됩니다. if (paused) { KGTApplication.Pause((result) => {}); } } |
Resume 하기
...
// 자동로그인정보가 존재하면 다음 KGTApplication의 start시에 자동로그인이 진행됨으로 자동로그인정보를 제거하려면 로그아웃을 진행해야함
bool useAutoLogin = true;
KGTApplication.UseAutoLogin = useAutoLogin; |
로그인
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 로그인 UI를 사용하지 않는 로그인하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTIdpCode idpCode = KGTIdpCode.Kakao; // appDelegate의 백그라운드 이동 함수에서 구현 // [주의] OnApplicationPause 구현합니다. // [주의] OnApplicationFocus에서는 구현하지 않도록 합니다. void OnApplicationPause(bool paused) {KGTPlayer.Login(idpCode, (result) => { if (result.IsSuccess) { if (!paused) // 포그라운드로로그인 이동한 상태 성공 처리. { // 게임이플랫폼에서 발급한 포그라운드로현재 이동되었을Player의 때ID 실행해야 할 메소드 string playerId = KGTApplication.Resume((result) =>KGTPlayer.CurrentPlayer.PlayerId; // 플랫폼 {액세스 토큰 string accessToken = if (result.IsSuccess)KGTPlayer.AccessToken; // 현재 IDP 인증 정보를 {가져옴 var idpProfile = KGTPlayer.CurrentPlayer.IdpProfile; // [TODO] resume이게임 성공서버 한로그인 경우및 게임 화면을화면으로 재개합니다.이동 } else } { // else로그인 실패 처리. if (result.code == {KGTResultCode.NetworkFailure || result.code == // [TODO] resume이 실패 한 경우 인증 실패 면 로그인 화면으로, 그외의 경우는 에러 팝업을 띄우고 재시도 여부를 확인합니다.KGTResultCode.ServerTimeout || result.code == KGTResultCode.ServerConnectionFailed) { // if (result.code == KGTResultCode.AuthFailure ||[TODO] 네트워크 에러가 발생한 경우에는 로그인 재시도 요청 하여야 합니다. } else if (result.code == KGTResultCode.IdpAuthFailureForbidden) { { // [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 노출 이후, 확인 클릭시, // [TODO] 인증 실패의 경우 시작 화면으로 이동해서 다시 신규 로그인 flow를 수행합니다.앱을 종료하도록 구현합니다. } else if (result.code == KGTResultCode.UserCanceled) } { // [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다. else } else { { // [TODO] 나머지 에러가 발생한 경우 경우경우에는 에러 안내 후 resume로그인 재시도 을요청 재시도하여야 합니다. // 에러코드 및 로그 }확인 후 원인 파악이 필요합니다. } }); } } |
...
); |
런처를 통해서 로그인하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // 런처를 자동로그인사용통해서 유무를전달 세팅,받은 세팅하지bridgeToken 않으면string 사용하지bridgeToken 않음= 상태로""; 세팅 // 자동로그인사용설정으로 로그인이 성공하면 자동로그인정보가 생성됨 // 자동로그인정보가 존재하면 다음 KGTApplication의 start시에 자동로그인이 진행됨으로 자동로그인정보를 제거하려면 로그아웃을 진행해야함 bool useAutoLogin = true; KGTApplication.UseAutoLogin = useAutoLogin; |
로그인
...
기본 로그인 UI를 사용하는 로그인하기
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTPlayer.Login((result) => { KGTPlayer.LoginWithBridgeToken(bridgeToken, (result) => { if (result.IsSuccess) { // 로그인 성공 처리. if (result.IsSuccess) // 플랫폼에서 발급한 현재 Player의 {ID //string 로그인playerId 성공= 처리KGTPlayer.CurrentPlayer.PlayerId; // 플랫폼에서 발급한 현재 Player의 ID string playerId = KGTPlayer.CurrentPlayer.PlayerId; // 플랫폼 플랫폼 액세스 토큰 string accessToken = KGTPlayer.AccessToken; // 현재 IDP 인증 정보를 가져옴 var idpProfile = KGTPlayer.CurrentPlayer.IdpProfile; // [TODO] 게임 서버 로그인 및 게임 화면으로 이동 } else { // 유저 캔슬로 인한 로그인 실패. 로그인 실패 처리. if (result.code == KGTResultCode.NetworkFailure || }); }); |
기본 로그인 UI를 사용하지 않는 로그인하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTIdpCode idpCode = KGTIdpCode.Kakao; KGTPlayer.Login(idpCode, (result) => { result.code == KGTResultCode.ServerTimeout || if (result.IsSuccess)code == KGTResultCode.ServerConnectionFailed) { { // 로그인 성공 처리. // 플랫폼에서[TODO] 발급한 현재 Player의 ID네트워크 에러가 발생한 경우에는 로그인 재시도 요청 하여야 합니다. } string playerId = KGTPlayer.CurrentPlayer.PlayerId; else if // 플랫폼 액세스 토큰(result.code == KGTResultCode.Forbidden) { string accessToken = KGTPlayer.AccessToken; // 현재[TODO] IDPCBT기간동안 인증허용된 정보를유저외에는 가져옴인증이 불가능 할 수 있습니다. 유저에게 안내메시지 노출 var idpProfile = KGTPlayer.CurrentPlayer.IdpProfile;이후, 확인 클릭시, 앱을 종료하도록 구현합니다. //} [TODO] 게임 서버 로그인 및 게임 화면으로 이동 else if } (result.code == KGTResultCode.UserCanceled) else { { // 로그인 실패 처리. if (result.code == KGTResultCode.NetworkFailure ||// [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다. } result.code == KGTResultCode.ServerTimeout || else { result.code == KGTResultCode.ServerConnectionFailed) {// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 // [TODO] 네트워크 에러가 발생한 경우에는 후 로그인 재시도 요청 하여야 합니다. } // 에러코드 및 로그 확인 후 else원인 if (result.code == KGTResultCode.Forbidden)파악이 필요합니다. } { // [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 노출 이후, 확인 클릭시, 앱을 종료하도록 구현합니다.}); }); |
로그아웃
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 로그아웃 UI를 사용하지 않는 로그아웃하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTPlayer.Logout(false, (result) => { if (result.IsSuccess) { } // 로그아웃 성공 else if (result.code == KGTResultCode.UserCanceled) { // [TODO] 사용자가시작 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.화면으로 돌아가기 } else { // [TODO]로그아웃 나머지실패 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. // 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } }); }); |
...
}
}); |
탈퇴
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
...
기본 탈퇴 UI를 사용하지 않는 탈퇴하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // 런처를 통해서 전달 받은 bridgeToken string bridgeToken = ""; KGTPlayer.LoginWithBridgeTokenUnregister(bridgeTokenfalse, (result) => { if (result.IsSuccess) { // 로그인탈퇴 성공 처리. // 플랫폼에서[TODO] 발급한시작 현재화면으로 Player의돌아가기 ID } string playerIdelse = KGTPlayer.CurrentPlayer.PlayerId; { // 플랫폼 액세스 토큰 // 탈퇴 실패 string accessToken = KGTPlayer.AccessToken; // 현재 IDP 인증 정보를 가져옴 } }); |
계정 연결
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 계정 연결 UI를 사용하지 않는 계정 연결하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTIdpCode idpCode = KGTIdpCode.Kakao; KGTPlayer.Connect(idpCode, (result) => { if (result.IsSuccess) { var idpProfile = KGTPlayer.CurrentPlayer.IdpProfile; // [TODO]계정 게임연결 서버성공 로그인 및 게임 화면으로 이동 } } else if (result.code else== KGTResultCode.NotAuthorized) { // 로그인 실패 처리.현재 인증이 안되어 있는 경우 } else if (result.code == KGTResultCode.NetworkFailureInvalidState) || { result.code == KGTResultCode.ServerTimeout || // 이미 연결되어 있는 경우 } else if (result.code == KGTResultCode.ServerConnectionFailedAlreadyUsedIDPAccount) { // [TODO]이미 네트워크사용중인 에러가IDP계정으로 발생한연결을 경우에는 로그인 재시도 요청 하여야 합니다. 시도한 경우 } else if (result.code == KGTResultCode.Forbidden) { // 그 밖의 에러 // [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 노출 이후, 확인 클릭시, 앱을 종료하도록 구현합니다. } else if (result.code == KGTResultCode.UserCanceled) { // [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다. } else { // [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. // 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } }); }); |
로그아웃
...
기본 로그아웃 UI를 사용하는 로그아웃하기
...
}
}); |
프로필
...
내 정보 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
KGTPlayer player = KGTPlayer.CurrentPlayer; |
내 IDP 정보 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
KGTIdpProfile idpProfile = KGTPlayer.CurrentPlayer.IdpProfile; |
시스템 정보
...
언어 코드 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string languageCode = KGTSystem.LanguageCode; |
국가 코드 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string countryCode = KGTSystem.CountryCode; |
IP 기반 국가 코드 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string geoCountryCode = KGTSystem.GeoCountryCode; |
기기 아이디 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string deviceId = KGTSystem.DeviceId; |
기기 모델 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string deviceModel = KGTSystem.DeviceModel; |
OS 이름 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string osName = KGTSystem.OsName; |
네트워크 연결 여부 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
bool isNetworkConnected = KGTSystem.IsNetworkConnected; |
연결된 네트워크 타입 가져오기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTPlayer.Logout(true, (result)string networkType => { if (result.IsSuccess) { // 로그아웃 성공 KGTSystem.NetworkType; |
카카오 연동 기능
...
카카오톡 게임 메시지 수신 여부 설정하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTKakaoTalk.ShowSetting((result) => { if (result.IsSucces) // [TODO] 시작 화면으로{ 돌아가기 } // 카카오톡 게임 else메시지 수신 여부 설정 성공 { } else // 로그아웃 실패 } }); |
기본 로그아웃 UI를 사용하지 않는 로그아웃하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTPlayer.Logout(false, (result) => if (result.code == KGTResultCode.NotKakaoTalkUser) { if (result.IsSuccess) // 로그인 한 {유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 //같이 로그아웃카카오톡 성공유저가 아닌 경우. } // [TODO] 시작 화면으로else 돌아가기 }{ else // 카카오톡 게임 {메시지 수신 여부 // 로그아웃 설정 실패 } }); |
...
카카오톡 프로필 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
계정 연결
...
기본 계정 연결 UI를 사용하는 계정 연결하기
...
코드 블럭 | ||
---|---|---|
| ||
코드 블럭 | ||
| ||
using KakaoGame.API; KGTKakaoTalk.TalkProfile((result) => { if (result.IsSuccessIsSucces) { // 카카오톡 계정프로필 연결조회 성공 KGTKakaoTalkProfile talkProfile = result.Content; } else if (result.code == KGTResultCode.NotAuthorizedNotKakaoTalkUser) { // 현재로그인 인증이한 안되어유저가 있는'카카오톡' 경우 } else if (result.code == KGTResultCode.InvalidState) { // 이미 연결되어 있는 경우유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else if (result.code == KGTResultCode.AlreadyUsedIDPAccount) { // 이미카카오톡 사용중인프로필 IDP계정으로조회 연결을실패 시도한 경우 } } else { // 그 밖의 에러 } }); |
...
}); |
카카오톡 게임 친구 목록 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTIdpCode idpCode = KGTIdpCode.Kakao; KGTPlayer.Connect(idpCode, KGTKakaoTalk.Friends((result) => { if (result.IsSuccessIsSucces) { // 계정 연결 성공var players = result.Content; // 카카오톡 게임 친구 목록 조회 성공. } foreach(var player elsein if (result.code == KGTResultCode.NotAuthorized)players) { { var kakaoProfile = (KGTKakaoProfile)player.IdpProfile; // 현재 인증이 안되어 있는 경우게임 메세지 전송시 사용 } } else if (result.code == KGTResultCode.InvalidStateNotKakaoTalkUser) { // 이미로그인 연결되어한 있는유저가 경우'카카오톡' } else if (result.code == KGTResultCode.AlreadyUsedIDPAccount) { // 이미 사용중인 IDP계정으로 연결을 시도한 경우유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else { // 그 밖의 에러 카카오톡 게임 메시지 수신 여부 설정 실패 } }); |
프로필
...
카카오톡 게임 메시지 보내기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
KGTPlayer player = KGTPlayer.CurrentPlayer; |
내 IDP 정보 조회하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
KGTIdpProfile idpProfile = KGTPlayer.CurrentPlayer.IdpProfile; |
계정 관리 페이지 띄우기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTPlayer.OpenMyPage((result) => { if (result.IsSuccess) { // 계정 관리 페이지 띄우기 성공 (외부 브라우저로 웹 페이지가 노출 됩니다.)// Friends API를 통해 KGTKakaoFriendProfile kakaoProfile; // 카카오 프로필(KGTKakaoFriendProfile 객체) // [TODO] 템플릿 Id 설정 string templateId; // [TODO] 메시지 템플릿에 설정한 인자 설정 Dictionary<string, object> argumentDic = new Dictionary<string, object>(); KGTKakaoTalk.SendGameMessage(kakaoProfile, tempalteId, argumentDic, (result) => { if (result.IsSucces) { // 카카오톡 채팅 메시지 보내기 성공. } else if (result.code == KGTResultCode.NotSupportedMessageSettingDisabled) { // 계정받은이가 관리메시지 페이지를수신 지원하지거부를 않는설정한 경우 } // else if (Guest 로그인 상태인 경우result.code == KGTResultCode.ExceedDailyUsage) } { else {// 한명이 특정 앱에 대해 보낼 수 있는 // 계정 관리 페이지 띄우기 실패하루 쿼터(받는 사람 관계없이) 초과시 발생 } } }); |
시스템 정보
언어 코드 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; else string languageCodeif (result.code == KGTSystem.LanguageCode; |
국가 코드 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string countryCode = KGTSystem.CountryCode; |
IP 기반 국가 코드 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string geoCountryCode = KGTSystem.GeoCountryCode; |
기기 아이디 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string deviceId = KGTSystem.DeviceId; |
기기 모델 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string deviceModel = KGTSystem.DeviceModel; |
OS 이름 가져오기
...
KGTResultCode.ExceedMonthlyUsage)
{
// 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
}
else if (result.code == KGTResultCode.NotKakaoTalkUser)
{
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
}
else
{
// 카카오톡 채팅 메시지 보내기 실패.
}
}); |
카카오톡 친구 초대 메시지 전송하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // string[TODO] osName팝업창으로 = KGTSystem.OsName; |
네트워크 연결 여부 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
bool isNetworkConnected = KGTSystem.IsNetworkConnected; |
연결된 네트워크 타입 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string networkType = KGTSystem.NetworkType; |
설정된 게임 언어 코드 가져오기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
string gameLanguageCode = KGTSystem.GameLanguageCode; |
게임 언어 코드 설정하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
var languageCode = KGTLanguageCode.Device;
KGTSystem.SetGameLanguageCode(languageCode); |
카카오 연동 기능
카카오톡 게임 메시지 수신 여부 설정하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTKakaoTalk.ShowSetting((result) => { if (result.IsSucces) 띄울지 여부 설정 bool isSingle; // [TODO] 팝업창으로 띄울지 여부 설정 bool isPopup; // [TODO] 템플릿 Id 설정 string templateId; // [TODO] 메시지 템플릿에 설정한 인자 설정 Dictionary<string, object> argumentDic = new Dictionary<string, object>(); KGTKakaoTalk.SendInviteMessage(isSingle, isPopup, tempalteId, argumentDic, (result) => { if (result.IsSucces) { // 요청 성공 } else { // 카카오톡 게임 메시지 수신 여부 설정 성공요청 실패 } else if (result.code == KGTResultCode.NotKakaoTalkUserMessageSettingDisabled) { { // 로그인받은이가 한메시지 유저가수신 '카카오톡'거부를 유저가설정한 아닙니다경우. 카카오 스토리만 가입한 유저의} 계정과 같이 카카오톡 유저가 아닌 경우. else if } (result.code == KGTResultCode.ExceedDailyUsage) else { // 카카오톡 게임 메시지 수신 여부 설정 실패 } }); |
카카오톡 프로필 조회하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTKakaoTalk.TalkProfile((result) => { 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생. } else if (result.IsSuccescode == KGTResultCode.ExceedMonthlyUsage) { { // 카카오톡 프로필 조회 성공 // 한명이 특정 앱에 대해 특정인에게 KGTKakaoTalkProfile보낼 talkProfile = result.Content;수 있는 한달 쿼터 초과시 발생. } else if (result.code == KGTResultCode.NotKakaoTalkUser) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가} 아닌 경우. } else else { // 카카오톡 프로필 조회 실패 그 밖의 에러 } } }); |
카카오톡
...
채널 추가하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; KGTKakaoTalk.Friends((result) => { if (result.IsSucces) // [TODO] 채널 Id 설정 int channelId; KGTKakaoTalk.AddChannel(channelId, (result) => { if (result.IsSucces) var players = result.Content;{ // 카카오톡친구 게임추가하기 친구성공 목록 조회 성공. } else if foreach(var player in players) {result.code == KGTResultCode.NotKakaoTalkUser) { var kakaoProfile = (KGTKakaoProfile)player.IdpProfile; // 게임로그인 메세지한 전송시유저가 사용'카카오톡' } } else if (result.code == KGTResultCode.NotKakaoTalkUser) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else { // 카카오톡 게임 메시지 수신 여부 설정친구 추가하기 실패 } }); |
...
내 초대 메시지로 가입한 친구 목록 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // [TODO] Friends이벤트 API를Id 통해설정 KGTKakaoFriendProfileint kakaoProfileeventId; // 카카오 프로필(KGTKakaoFriendProfile 객체) // [TODO] 템플릿 Id 설정 string templateId; // [TODO] 메시지 템플릿에 설정한 인자 설정 Dictionary<string, object> argumentDic = new Dictionary<string, object>(); KGTKakaoTalk.SendGameMessage(kakaoProfile, tempalteId, argumentDic, (result) => { if (result.IsSucces) { KGTKakaoInvitation.Joiners(eventId, (result) => { if (result.IsSucces) { List<KGTPlayer> players = result.Content; // 내가 초대한 플레이어 목록 가져오기 foreach (var player in players) // 카카오톡 채팅 메시지{ 보내기 성공. } // else수신자의 if (result.code == KGTResultCode.MessageSettingDisabled)플레이어 아이디 { var playerId = player.PlayerId; // 받은이가 메시지 수신 거부를 설정한 경우 var idpProfile = }player.IdpProfile; else if (result.code == KGTResultCode.ExceedDailyUsage) var kakaoProfile = player.IdpProfile {as KGTKakaoFriendProfile; // 한명이 특정 앱에// 대해수신자의 보낼닉네임 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생 var nickname }= kakaoProfile.Nickname; else if (result.code == KGTResultCode.ExceedMonthlyUsage) // 수신자의 프로필 {썸네일 이미지 // 한명이 특정 앱에var 대해thumbnailImageUrl 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생= kakaoProfile.ThumbnailImageUrl; // 수신지의 탈퇴 이력 조회. UI상에서 탈퇴 여부 정보를 표시할 경우 해당 flag를 사용. var isUnregistered = kakaoProfile.IsUnregistered; } } else if (result.code == KGTResultCode.NotKakaoTalkUser) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else { // 카카오톡 채팅 메시지 보내기 실패.호출 실패 } }); |
...
내가 초대 메시지를 보낸 친구 숫자 조회하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // [TODO] 팝업창으로이벤트 띄울지 여부Id 설정 boolint isSingleeventId; // [TODO] 팝업창으로 띄울지 여부 설정 bool isPopup;KGTKakaoInvitation.ReceiversCount(eventId, (result) => { if (result.IsSucces) // [TODO]{ 템플릿 Id 설정 string templateId; // [TODO] 메시지 템플릿에 설정한 인자 설정 Dictionary<string, object> argumentDic = new Dictionary<string, object>(); KGTKakaoTalk.SendInviteMessage(isSingle, isPopup, tempalteId, argumentDic, (result) => { 호출 성공 var content = result.Content; var totalReceiversCount = content.TotalReceiversCount; if (result.IsSucces) var joinersCount = {content.JoinersCount; // 요청totalReceiversCount 성공- 전체 } else 친구 수 { // 요청joinersCount 실패- 게임에 가입한 친구 수 if (result.code == KGTResultCode.MessageSettingDisabled)} { // 받은이가 메시지 수신 거부를 설정한 경우. } else if (result.code == KGTResultCode.ExceedDailyUsage) { // 한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생. } else if (result.code == KGTResultCode.ExceedMonthlyUsage) { // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생. } else if (result.code == KGTResultCode.NotKakaoTalkUser) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. } else { // 그 밖의 에러 } } }); |
카카오톡 채널 추가하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
// [TODO] 채널 Id 설정
int channelId;
KGTKakaoTalk.AddChannel(channelId, (result) =>
{
if (result.IsSucces)
{
// 친구 추가하기 성공
}
else if (result.code == KGTResultCode.NotKakaoTalkUser)
{
// 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
}
else
{
// 친구 추가하기 실패
}
}); |
구글 게임
업적 달성 화면 보여주기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
KGTGoogleGamesAchievements.ShowAchievementView(); |
업적 달성
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
// [TODO] 업적 아이디 설정
var id = "";
KGTGoogleGamesAchievements.Unlock(id); |
업적 노출하기
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
// [TODO] 업적 아이디 설정
var id = "";
KGTGoogleGamesAchievements.Reveal(id); |
업적 단계 증가
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API;
// [TODO] 업적 아이디 설정
var id = "";
var numSteps = 0;
KGTGoogleGamesAchievements.SetSteps(id, numSteps); |
업적 단계 설정
...
코드 블럭 | ||
---|---|---|
| ||
using KakaoGame.API; // [TODO] 업적 아이디 설정 var id = ""; var numSteps = 0; KGTGoogleGamesAchievements.Increment(id, numStepselse if (result.code == KGTResultCode.NotKakaoTalkUser) { // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우. } else { // 친구 추가하기 실패 } }); |