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
{
// 기타 실패 에러 처리
}
})); |
, multiple selections available,