버전 비교

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

...

minLevel1
maxLevel6

...

outlinefalse

...

style

...

none
typelist

...

printablefalse

...

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

...

SDK 초기화

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

코드 블럭
languagec#
using KakaoGame.API;

KGTApplication.InitSDK();

스타트 (Start) 하기

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

코드 블럭
languagec#
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 하기

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

코드 블럭
languagec#
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 하기

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

코드 블럭
languagec#
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 을 재시도 합니다.
                }
            }
        });

...


    }
}

윈도우즈 환경에서 자동로그인 설정하기

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

코드 블럭
languagec#
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;

로그인

...

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

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

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

코드 블럭
languagec#
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로그인 재시도 요청 재시도하여야 합니다.
            // 에러코드  로그 }확인  원인 파악이 필요합니다.
        }
   
    });
   
}
}

...

);

런처를 통해서 로그인하기

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

코드 블럭
languagec#
using KakaoGame.API;

// 런처를 자동로그인사용통해서 유무를전달 세팅,받은 세팅하지bridgeToken
않으면string 사용하지bridgeToken 않음= 상태로"";
세팅
// 자동로그인사용설정으로 로그인이 성공하면 자동로그인정보가 생성됨
// 자동로그인정보가 존재하면 다음 KGTApplication의 start시에 자동로그인이 진행됨으로 자동로그인정보를 제거하려면 로그아웃을 진행해야함
bool useAutoLogin = true;
KGTApplication.UseAutoLogin = useAutoLogin;

로그인

...

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

코드 블럭
languagec#
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를 사용하지 않는 로그인하기

...

코드 블럭
languagec#
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기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 노출 이후, 확인 클릭시, 앱을 종료하도록 구현합니다.});
});

로그아웃

...

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

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

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

코드 블럭
languagec#
using KakaoGame.API;

KGTPlayer.Logout(false, (result) =>
{
    if (result.IsSuccess) 
    {
  }      // 로그아웃 성공
 else if (result.code == KGTResultCode.UserCanceled) 
        {
            // [TODO] 사용자가시작 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.화면으로 돌아가기
         } 
        else 
        {
  
         // [TODO]로그아웃 나머지실패
에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다.
            // 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
        }
    });
});

...

}
});

탈퇴

...

발췌문 삽입
로그인 탈퇴 SDK 예제로그인
탈퇴 SDK 예제
namelogin_with_bridge_tokenunregister
nopaneltrue

...

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

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

코드 블럭
languagec#
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 인증 정보를 가져옴
 }
});

계정 연결

...

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

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

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

코드 블럭
languagec#
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를 사용하는 로그아웃하기

...

}
});

프로필

...

내 정보 조회하기

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

코드 블럭
languagec#
using KakaoGame.API;

KGTPlayer player = KGTPlayer.CurrentPlayer;

내 IDP 정보 조회하기

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

코드 블럭
languagec#
using KakaoGame.API;

KGTIdpProfile idpProfile = KGTPlayer.CurrentPlayer.IdpProfile;

시스템 정보

...

언어 코드 가져오기

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

코드 블럭
languagec#
using KakaoGame.API;

string languageCode = KGTSystem.LanguageCode;

국가 코드 가져오기

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

코드 블럭
languagec#
using KakaoGame.API;

string countryCode = KGTSystem.CountryCode;

IP 기반 국가 코드 가져오기

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

코드 블럭
languagec#
using KakaoGame.API;

string geoCountryCode = KGTSystem.GeoCountryCode;

기기 아이디 가져오기

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

코드 블럭
languagec#
using KakaoGame.API;

string deviceId = KGTSystem.DeviceId;

기기 모델 가져오기

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

코드 블럭
languagec#
using KakaoGame.API;

string deviceModel = KGTSystem.DeviceModel;

OS 이름 가져오기

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

코드 블럭
languagec#
using KakaoGame.API;

string osName = KGTSystem.OsName;

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

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

코드 블럭
languagec#
using KakaoGame.API;

bool isNetworkConnected = KGTSystem.IsNetworkConnected;

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

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

코드 블럭
languagec#
using KakaoGame.API;

KGTPlayer.Logout(true, (result)string networkType =>
{
    if (result.IsSuccess) 
    {
        // 로그아웃 성공 KGTSystem.NetworkType;

카카오 연동 기능

...

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

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

코드 블럭
languagec#
using KakaoGame.API;

KGTKakaoTalk.ShowSetting((result) => 
{
    if (result.IsSucces) 
 // [TODO] 시작 화면으로{
돌아가기     }   // 카카오톡 게임 else메시지 수신 여부 설정 성공
 {   }
    else // 로그아웃 실패
    }
});

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

...

코드 블럭
languagec#
using KakaoGame.API;

KGTPlayer.Logout(false, (result) =>
if (result.code == KGTResultCode.NotKakaoTalkUser)
    {
    if (result.IsSuccess)   // 로그인  {유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 //같이 로그아웃카카오톡 성공유저가 아닌 경우.
    }
 // [TODO] 시작 화면으로else 돌아가기
    }{
     else   // 카카오톡 게임 {메시지 수신 여부       // 로그아웃 설정 실패
    }
});

...

카카오톡 프로필 조회하기

발췌문 삽입
탈퇴 카카오 연동 기능 SDK 예제탈퇴
카카오 연동 기능 SDK 예제
nameunregisterkakao_talk_talk_profile
nopaneltrue

계정 연결

...

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

...

using KakaoGame.API; KGTPlayer.Connect
코드 블럭
languagec#
코드 블럭
languagec#
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 
    {
        // 그 밖의 에러
    }
});

...

});

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

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

코드 블럭
languagec#
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 
    {
        // 그 밖의 에러 카카오톡 게임 메시지 수신 여부 설정 실패
    }
});

프로필

...

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

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

코드 블럭
languagec#
using KakaoGame.API;

KGTPlayer player = KGTPlayer.CurrentPlayer;

내 IDP 정보 조회하기

...

코드 블럭
languagec#
using KakaoGame.API;

KGTIdpProfile idpProfile = KGTPlayer.CurrentPlayer.IdpProfile;

계정 관리 페이지 띄우기

...

코드 블럭
languagec#
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     {// 한명이 특정 앱에 대해 보낼  있는  // 계정 관리 페이지 띄우기 실패하루 쿼터(받는 사람 관계없이) 초과시 발생
    }
 } });

시스템 정보

언어 코드 가져오기

...

코드 블럭
languagec#
using KakaoGame.API; else string languageCodeif (result.code == KGTSystem.LanguageCode;

국가 코드 가져오기

...

코드 블럭
languagec#
using KakaoGame.API;

string countryCode = KGTSystem.CountryCode;

IP 기반 국가 코드 가져오기

...

코드 블럭
languagec#
using KakaoGame.API;

string geoCountryCode = KGTSystem.GeoCountryCode;

기기 아이디 가져오기

...

코드 블럭
languagec#
using KakaoGame.API;

string deviceId = KGTSystem.DeviceId;

기기 모델 가져오기

...

코드 블럭
languagec#
using KakaoGame.API;

string deviceModel = KGTSystem.DeviceModel;

OS 이름 가져오기

...

KGTResultCode.ExceedMonthlyUsage) 
    {
        // 한명이 특정 앱에 대해 특정인에게 보낼 수 있는 한달 쿼터 초과시 발생
    }
    else if (result.code == KGTResultCode.NotKakaoTalkUser)
    {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
    }
    else 
    {
        // 카카오톡 채팅 메시지 보내기 실패.
    }
});

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

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

코드 블럭
languagec#
using KakaoGame.API;

// string[TODO] osName팝업창으로 = KGTSystem.OsName;

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

...

코드 블럭
languagec#
using KakaoGame.API;

bool isNetworkConnected = KGTSystem.IsNetworkConnected;

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

...

코드 블럭
languagec#
using KakaoGame.API;

string networkType = KGTSystem.NetworkType;

설정된 게임 언어 코드 가져오기

...

코드 블럭
languagec#
using KakaoGame.API;

string gameLanguageCode = KGTSystem.GameLanguageCode;

게임 언어 코드 설정하기

...

코드 블럭
languagec#
using KakaoGame.API;

var languageCode = KGTLanguageCode.Device;
KGTSystem.SetGameLanguageCode(languageCode);

카카오 연동 기능

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

...

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

카카오톡 프로필 조회하기

...

코드 블럭
languagec#
using KakaoGame.API;

KGTKakaoTalk.TalkProfile((result) => 
{
    한명이 특정 앱에 대해 보낼 수 있는 하루 쿼터(받는 사람 관계없이) 초과시 발생.
        }
        else if (result.IsSuccescode == KGTResultCode.ExceedMonthlyUsage)
     {   {
     // 카카오톡 프로필 조회 성공   // 한명이 특정 앱에 대해 특정인에게 KGTKakaoTalkProfile보낼 talkProfile = result.Content;수 있는 한달 쿼터 초과시 발생.
        }
        else if (result.code == KGTResultCode.NotKakaoTalkUser)
        {
            // 로그인 한 유저가 '카카오톡' 유저가 아닙니다.
카카오  스토리만 가입한 유저의 계정과 같이 카카오톡 유저가}
아닌 경우.     }  else
  else      {
            // 카카오톡 프로필 조회 실패 그 밖의 에러
        }
    }
});

카카오톡

...

채널 추가하기

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

코드 블럭
languagec#
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
     {
        // 카카오톡 게임 메시지 수신 여부 설정친구 추가하기 실패
    }
});

...

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

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

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

...

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

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

코드 블럭
languagec#
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
        {
            // 그 밖의 에러
        }
    }
});

카카오톡 채널 추가하기

...

코드 블럭
languagec#
using KakaoGame.API;

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

KGTKakaoTalk.AddChannel(channelId, (result) => 
{
    if (result.IsSucces) 
    {
        // 친구 추가하기 성공
    }
    else if (result.code == KGTResultCode.NotKakaoTalkUser)
    {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
    }
    else
    {
        // 친구 추가하기 실패
    }
});

구글 게임

업적 달성 화면 보여주기

...

코드 블럭
languagec#
using KakaoGame.API;

KGTGoogleGamesAchievements.ShowAchievementView();

업적 달성

...

코드 블럭
languagec#
using KakaoGame.API;

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

KGTGoogleGamesAchievements.Unlock(id);

업적 노출하기

...

코드 블럭
languagec#
using KakaoGame.API;

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

KGTGoogleGamesAchievements.Reveal(id);

업적 단계 증가

...

코드 블럭
languagec#
using KakaoGame.API;

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

KGTGoogleGamesAchievements.SetSteps(id, numSteps);

업적 단계 설정

...

코드 블럭
languagec#
using KakaoGame.API;

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

KGTGoogleGamesAchievements.Increment(id, numStepselse if (result.code == KGTResultCode.NotKakaoTalkUser)
    {
        // 로그인 한 유저가 '카카오톡' 유저가 아닙니다. 카카오 스토리만 가입한 유저의 계정과 같이 카카오톡 유저가 아닌 경우.
    }
    else
    {
        // 친구 추가하기 실패
    }
});