1.1 초기화 및 상태 변화 이벤트 연동 SDK 예제

1.1. 초기화 및 상태 변화 이벤트 연동 SDK 예제

 


1.1.1. SDK 초기화 (iOS, Unreal만 해당)

애플리케이션의 AppDelegate.m 파일에 카카오게임 SDK의 초기화 코드를 추가합니다. initialize함수를 복사하여, 붙여넣습니다.

iOS 예제

#import <KakaoGame/KakaoGame.h>    // SDK 초기화 +(void) initialize {     // KakaoGame SDK initialize     [KGSession initializeSDKWithAppDelegateClassName:NSStringFromClass([AppDelegate class])]; }

Unreal Windows 환경을 지원하는 경우 게임 시작시 다른 API보다 먼저 SDK의 초기화 API를 호출해야 합니다.

Unreal 예제

#include "KakaoGame.h"   // SDK 초기화 FKGSession::Initialize();

 

1.1.2. 스타트(start) 하기

게임이 실행되면, 게임은 시작 함수를 호출하여 게임이 실행되었다는 정보를 카카오게임 SDK로 전달해야 합니다.
카카오게임 SDK의 시작 함수가 호출되면 플랫폼의 공지 사항, 업데이트 정보, 약관 동의등의 UI 기능을 수행하며 만약 이전에 로그인한 사용자의 기록이 있다면 자동 로그인 기능까지 수행하고 그 결과를 메서드 호출시 게임에서 입력한 콜백 함수를 통해 전달합니다.
따라서, 게임은 그 결과를 활용하여 사용자의 인증을 먼저 수행해야 할지, 혹은 이전에 하던 게임을 재개해야 할 지에 대한 결정을 할 수 있습니다.

Unity 예제

using Kakaogame.SDK;   // 실행(Start) 이벤트 전달 KGSession.Start(     (result, isAuthorized) => {         if (result.isSuccess) {             // Start 성공             if (isAuthorized) {                 // 자동 로그인 성공                 // 플랫폼에서 발급한 현재 Player의 ID                 string playerId = KGLocalPlayer.currentPlayer.playerId;                 // 플랫폼 액세스 토큰                 string accessToken = KGSession.accessToken;                 // 현재 IDP 인증 정보를 가져옴                 var idpProfile = KGLocalPlayer.currentPlayer.idpProfile;                 // [TODO] 게임 서버 로그인 및 게임 화면으로 이동             } else {                 ; // 자동 로그인 정보 없음, 로그인 화면으로 이동             }         } else {             if (result.code == KGResultCode.NetworkFailure ||                 result.code == KGResultCode.ServerTimeout ||                 result.code == KGResultCode.ServerConnectionFailed) {                 // [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도             } else {                 // [TODO] 유저에게 에러가 발생했음을 알림. 에러 원인 추적을 위해 에러코드도 포함된 문구이면 좋음.             }         }     });

Android 예제

iOS 예제

 Windows 동기식 예제

Windows 비동기식 예제

Unreal 예제

1.1.3. Puase하기

게임이 백그라운드로 내려가는 시점이 오면, 게임은 Pause API를 호출하여 게임이 비활성화되었다는 정보를 카카오게임 SDK로 전달해야합니다.
카카오게임 SDK는 Pause API가 호출되면 배터리 소모를 막기 위해 연결된 세션을 끊고, 주기적으로 발송되던 Heartbeat을 중단합니다.

Unity 예제

Android 예제

iOS 예제

 Unreal 예제

 

1.1.4. Resume하기

게임이 백그라운드로 내려갔다가 다시 활성화되는 시점이 오면, 게임은 Resume API를 호출하여 게임이 활성화되었다는 정보를 카카오게임 SDK로 전달해야합니다.
카카오게임 SDK는 Resume 메서드가 호출되면 인증의 만료 여부를 확인하고 그 여부에 따라 세션을 복구한 후 그 결과를 메서드 호출시 게임에서 입력한 콜백 함수를 통해 전달합니다.
게임은 그 결과를 활용하여 사용자의 인증을 다시 수행해야 할지, 혹은 이전에 하던 게임을 재개해야 할 지에 대한 결정을 할 수 있습니다.

Unity 예제

Android 예제

iOS 예제

 Unreal 예제

1.1.5. 새로운 Intent 받기 설정 추가하기(안드로이드만 해당)

게임의 MainActivity 내부에 아래와 같이 콜백을 추가합니다.

이 설정을 추가하지 않으면 게임하기를 통한 게임의 유입경로 체크에 문제가 됩니다. 반드시 추가해주세요.

그리고 유니티 사용 시에 아래 설정을 추가한 해당 MainActivity를 Unity 의 Assets/Plugins/Android/AndroidManifest.xml 파일에 main activity로 설정해 줍니다. 카카오 게임 유니티 SDK를 사용하는 경우 자동 셋팅됩니다.

Android 예제

1.1.6. 사용자 추적 허용 팝업 노출 제어하기(iOS 3.10.13 이상 버전 적용시 해당)

SDK 3.10.13 이상 적용시에 iOS 14 사용자로 하여금 추적 허용 팝업을 노출할 수 있는 기능을 제공하고 있습니다.

Xcode project 상에서 Info.plist 속성 값으로 제어할 수 있습니다.

위와 같이 "SHOW_ADID_USAGE_POPUP" 키를 설정하고 값을 Boolean 타입으로 설정합니다.

  • 추적 허용 팝업 노출 기능 ON : 해당 값을 "YES" 또는 "1"로 설정

  • 추적 허용 팝업 노출 기능 OFF : 해당 값을 "NO" 또는 "0"으로 설정 / 아예 "SHOW_ADID_USAGE_POPUP" 키 자체를 제거

iOS 15 이상에서는 사용자 추적 허용 팝업 호출(SDK 기준 Start API) 시점을 더 이상 앱 실행 직후에 호출할 수 없고, 앱이 완전히 실행이 된 후에만 사용할 수 있도록 변경되었습니다.

참고로, KakaoGameSDK가 아닌 다른 3rd-party SDK에서 사용자 추적 허용 팝업을 노출시키는 경우도 동일하게 해당 API를 앱이 완전히 실행이 된 후에 호출하도록 변경해야 합니다. 

1.1.9. 윈도우 자동로그인 세팅 및 상세 정보

윈도우SDK에서 기본 로그인 UI를 사용하지 않는 로그인일때 자동로그인 유무를 세팅하는 기능을 제공하고 있습니다.

자동로그인 유무를 세팅하는 예제는 아래와 같습니다.

Windows

Unreal

자동로그인 유무를 설정하지 않으면 기본으로 자동로그인을 위한 파일을 생성하지 않는 상태입니다.

자동로그인을 위한 파일이 생성되는 위치는 프로젝트 하위 폴더의 .kakaogames"폴더에 ".access"이름의 파일에 암호화되어 저장되어 있습니다.