80.1. 오프라인 게임 연동 SDK 예제

80.1. 오프라인 게임 연동 SDK 예제

80.1. 오프라인 게임 연동 SDK 예제

 


80.1.1. 약관 정보를 저장하기

게임에서 직접 약관 정보를 저장하는 예제입니다.

Unity 예제

using KakaoGame.SDK;   // 게임에서 약관창을 띄운 후 사용자 동의를 받은 약관 항목 정보를 {"tag" : true/false} 형태의 map 형태로 설정해서 api 호출    var agreementDic = new Dictionary<string, bool>(); // example data agreementDic["E001"] = true; agreementDic["E002"] = true; agreementDic["E006"] = true; agreementDic["N002"] = false; agreementDic["N003"] = false;    KGAgreement.Agreement = agreementDic;

Android 예제

import com.kakaogame.KGAgreement;    // 게임에서 약관창을 띄운 후 사용자 동의를 받은 약관 항목 정보를 {"tag" : true/false} 형태의 map 형태로 설정해서 api 호출 Map<String, Boolean> agreementTestMap = new LinkedHashMap<String, Boolean>();   agreementTestMap.put("E001", true); agreementTestMap.put("E002", true); agreementTestMap.put("E006", true); agreementTestMap.put("N002", false); agreementTestMap.put("N003", false);   KGAgreement.setAgreement(this, agreementTestMap);  

iOS 예제

#import <KakaoGame/KakaoGame.h>   // 게임에서 약관창을 띄운 후 사용자 동의를 받은 약관 항목 정보를 {"tag" : true/false} 형태의 map 형태로 설정해서 api 호출   Dictionary *agreementDic = {@"E001" : @(YES), @"E002" : @(YES), @"E006" : @(YES), @"N002" : @(NO), @"N003" : @(NO)};    [KGAgreement setAgreementWithAgreementDic:agreementDic];

Unreal 예제

#include "KakaoGame.h"   // 게임에서 약관창을 띄운 후 사용자 동의를 받은 약관 항목 정보를 {"tag" : true/false} 형태의 map 형태로 설정해서 api 호출 TMap<FString, bool> agreementMap; agreementMap.Add("E001", true); agreementMap.Add("E002", true); agreementMap.Add("E006", true); agreementMap.Add("N002", true); agreementMap.Add("N003", true);   FKGAgreement::SetAgreement(agreementMap);

80.1.2. 약관 정보를 가져오기

게임에서 저장한 약관 정보를 가져오는 예제입니다.

Unity 예제

using Kakaogame.SDK;    var agreementDic = KGAgreement.Agreement;    // 약관의 각 tag값에 대한 약관 동의 여부 확인후 게임에서 처리

Android 예제

import com.kakaogame.KGAgreement;   Map<String, Boolean> agreement = KGAgreement.getAgreement(activity);

iOS 예제

#import <KakaoGame/KakaoGame.h>      Dictionary *agreementDic = [KGAgreement getAgreement]; // 약관의 각 tag값에 대한 약관 동의 여부 확인후 게임에서 처리

Unreal 예제

#include "KakaoGame.h"    TMap<FString, bool> agreementMap = FKGAgreement::GetAgreement();

80.1.3. 계정 연결 전환 및 계정 연결모드 선택하기

계정 연결 전환을 시도하고 이미 사용중인 계정 오류가 발생시 계정 연결모드 선택할 수 있도록 처리하는 예제입니다.

Unity 예제

using KakaoGame.SDK;      // 신규로 추가된 계정 연결 전환 API를 호출 // 성공적으로 계정 연결된 경우는 IDP 계정으로 플레이 // AlreadyUsedIDPAccount(406) 에러 리턴시에 사용자에게 계정연결 모드 선택옵션 제공 // KGIdpChoiceMode.CurrentAccount 옵션 선택시 현재 계정으로 계속 플레이하도록 제공 // KGIdpChoiceMode.AlreadyConnectedAccount 옵션 선택시 전환하려던 IDP 계정으로 계정 전환 로그인 처리    KGIdpCode idpCode = KGIdpCode.Kakao;    // 계정 전환하려는 IDPCode    KGSessionForCustomUI.ConnectIdpAccount(idpCode, (result) => {     if (result.code == KGResultCode.Success)     {         // 계정 전환 정상적으로 성공처리     }     else if (result.code == KGResultCode.AlreadyUsedIDPAccount)     {         // 유저에게 계정 연결 모드 선택하는 팝업 노출 처리         // 사용자의 선택에 맞는 계정 연결모드 처리하도록 API 호출         KGIdpChoiceMode idpChoiceMode = KGIdpChoiceMode.CurrentAccount;         KGSessionForCustomUI.ChooseIdpChoiceMode(idpChoiceMode, (idpChoiceModeResult) => {             if (idpChoiceModelResult.code == KGResultCode.Success)             {                 // 계정 전환 선택 성공 처리                 // CurrentAccount로 호출했을 경우 그대로 게임 진행 처리                 // AlreadyConnectedAccount로 호출했을 경우 새로운 계정으로 전환되었기 때문에 새로 전환된 플레이어의 PlayerId 기반으로 게임데이터 전환 처리             }             else             {                 // 계정 전환 선택 실패 처리             }         });     }     else     {         // 기타 실패 에러 처리     } });

Android 예제

// 신규로 추가된 계정 연결 전환 API를 호출 // 성공적으로 계정 연결된 경우는 IDP 계정으로 플레이 // AlreadyUsedIDPAccount(406) 에러 리턴시에 사용자에게 계정연결 모드 선택옵션 제공 // KGIdpChoiceMode.CurrentAccount 옵션 선택시 현재 계정으로 계속 플레이하도록 제공 // KGIdpChoiceMode.AlreadyConnectedAccount 옵션 선택시 전환하려던 IDP 계정으로 계정 전환 로그인 처리    KGSessionForCustomUI.connectIdpAccount(getActivity(), idpCode, new KGResultCallback<Void>() {     @Override     public void onResult(KGResult<Void> result) {         if (result.isSuccess()) {             // 계정 전환 정상적으로 성공처리         } else {             if (result.getCode() == KGResult.KGResultCode.ALREADY_USED_IDP_ACCOUNT) {                 // 유저에게 계정 연결 모드 선택하는 팝업 노출 처리                 // 사용자의 선택에 맞는 계정 연결모드 처리하도록 API 호출                 // chooseIdpAccount();             } else {                 // 기타 실패 에러 처리             }         }     } });    KGSessionForCustomUI.chooseIdpAccount(getActivity(), mode, new KGResultCallback<Void>(){     @Override     public void onResult(KGResult<Void> result) {         if (result.isSuccess()) {             // 계정 전환 선택 성공 처리             // CurrentAccount로 호출했을 경우 그대로 게임 진행 처리             // AlreadyConnectedAccount로 호출했을 경우 새로운 계정으로 전환되었기 때문에 새로 전환된 플레이어의 PlayerId 기반으로 게임데이터 전환 처리         } else {            // 계정 전환 선택 실패 처리         }     } });   

iOS 예제

#import <KakaoGame/KakaoGame.h> // 신규로 추가된 계정 연결 전환 API를 호출 // 성공적으로 계정 연결된 경우는 IDP 계정으로 플레이 // AlreadyUsedIDPAccount(406) 에러 리턴시에 사용자에게 계정연결 모드 선택옵션 제공 // KGIdpChoiceMode.CurrentAccount 옵션 선택시 현재 계정으로 계속 플레이하도록 제공 // KGIdpChoiceMode.AlreadyConnectedAccount 옵션 선택시 전환하려던 IDP 계정으로 계정 전환 로그인 처리   KGIdpCode idpCode = KGIdpCodeKakao; // 계정 전환하려는 IDPCode   [KGSessionForCustomUI connectIdpAccountWithIdpCode:idpCode completionHandler:^(NSError *error) { {     if (error.code == KGErrorSuccess)     {         // 계정 전환 정상적으로 성공처리     }     else if (error.code == KGErrorAlreadyUsedIdpAccount)     {         // 유저에게 계정 연결 모드 선택하는 팝업 노출 처리         // 사용자의 선택에 맞는 계정 연결모드 처리하도록 API 호출           KGIdpChoiceMode choiceMode = KGIdpChoiceModeCurrentAccount;         [KGSessionForCustomUI chooseIdpChoiceMode:choiceMode completionHandler:^(NSError *choiceModeError) {             if (choiceModeError.code == KGErrorSuccess)             {                 // 계정 전환 선택 성공 처리                 // KGIdpChoiceModeCurrentAccount로 호출했을 경우 그대로 게임 진행 처리                 // KGIdpChoiceModeAlreadyConnectedAccount로 호출했을 경우 새로운 계정으로 전환되었기 때문에 새로 전환된 플레이어의 PlayerId 기반으로 게임데이터 전환 처리             }             else             {                 // 계정 전환 선택 실패 처리             }         }];     }     else     {         // 기타 실패 에러 처리     } }];

Unreal 예제

#include "KakaoGame.h" // 신규로 추가된 계정 연결 전환 API를 호출 // 성공적으로 계정 연결된 경우는 IDP 계정으로 플레이 // AlreadyUsedIDPAccount(406) 에러 리턴시에 사용자에게 계정연결 모드 선택옵션 제공 // EKGIdpChoiceMode::CurrentAccount 옵션 선택시 현재 계정으로 계속 플레이하도록 제공 // EKGIdpChoiceMode::AlreadyConnectedAccount 옵션 선택시 전환하려던 IDP 계정으로 계정 전환 로그인 처리 EKGIdpCode idpCode = EKGIdpCode::Kakao; FKGSessionForCustomUI::ConnectIdpAccount(idpCode, FKGResultDelegate::CreateLambda([=](FKGResult result) {   if (result.IsSuccess())   {     // 계정 전환 정상적으로 성공처리   }   else if (result.GetCode() == FKGResultCode::AlreadyUsedIDPAccount)   {     // 유저에게 계정 연결 모드 선택하는 팝업 노출 처리     // 사용자의 선택에 맞는 계정 연결모드 처리하도록 API 호출     EKGIdpChoiceMode idpChoiceMode = EKGIdpChoiceMode::CurrentAccount;     FKGSessionForCustomUI::ChooseIdpAccount(idpChoiceMode, FKGResultDelegate::CreateLambda([=](FKGResult idpChoiceModeResult) {       if (idpChoiceModeResult.IsSuccess())       {         // 계정 전환 선택 성공 처리         // CurrentAccount로 호출했을 경우 그대로 게임 진행 처리         // AlreadyConnectedAccount로 호출했을 경우 새로운 계정으로 전환되었기 때문에 새로 전환된 플레이어의 PlayerId 기반으로 게임데이터 전환 처리       }       else       {         // 계정 전환 선택 실패 처리       }     }));   }   else   {     // 기타 실패 에러 처리   } }));