Skip to content
스토브
마지막 업데이트

인게임 메뉴

이해하기


인게임 메뉴는 게임 플레이 중 플레이어가 스토브 플랫폼의 주요 기능에 빠르게 접근할 수 있도록 제공하는 SDK 기반의 설정 UI예요.
별도의 화면 전환 없이 게임 내에서 계정 관리, 고객센터, 알림 설정, 이용약관 고지 등 운영에 필수적인 기능을 제공해요.
인게임 메뉴는 Mobile(Android/iOS) 플랫폼을 기본으로 지원하며, 각 기능은 사업/기획 의도에 맞게 선택적으로 적용해야 해요.

기능 구성

인게임 메뉴에서 제공하는 기능은 구현 필수 여부에 따라 아래와 같이 구분돼요.

기능명구현설명
계정관리 기능필수계정 연결·이메일 인증·비밀번호 변경·스토브 회원 탈퇴 등 계정 설정 제공
로그아웃 기능필수현재 계정 로그아웃 (게스트는 로그아웃 시 계정 유실 주의)
게임 해지 기능필수게임 정보·스토브 계정 연결 정보 삭제 (SDK 미제공, 게임에서 직접 구현)
정보 노출필수계정 유형·스토브 회원번호·게임/SDK 버전 등 노출
고객센터 연동필수FAQ·1:1 문의 고객센터 연결
알림 설정필수광고성 알림(Push) 수신 설정 (국내·플랫폼사 정책상 필수)
인게임 내 이용약관 고지필수플랫폼·국가 정책에 따른 이용약관 고지
SDK(플랫폼) 노출 언어 변경선택게임 언어에 맞춰 SDK 노출 언어 통일
기기 등록 서비스선택기기 정보 등록으로 게임 접속 허용 (Auth-ui v2.7.2 이상)
커뮤니티선택인게임에서 스토브 커뮤니티 연결 (파트너스 사전 세팅 필요)

서버 초기화, 게임 해지, 로그아웃 기능 구현에 주의해요
세 기능은 사업/기획의 의도에 따라 선택적으로 구현해야 해요.
구체적인 구현은 사업/기획 담당자와의 논의 후 메뉴 기획 의도에 맞춰 적용해 주세요.

계정 유형별 제공 항목

계정 관리 화면은 로그인한 계정 유형에 따라 제공되는 항목이 다르게 구성돼요.

계정 유형제공 메뉴
정회원(이메일)이메일 인증, 비밀번호 변경, 스토브 회원 탈퇴
정회원(3rd Party)스토브 회원 탈퇴
게스트계정 연결 (게스트 소실 방지를 위해 필수 제공)

정회원(이메일): 이메일 인증, 비밀번호 재설정, 스토브 회원 탈퇴 항목이 노출돼요.


정회원(3rd Party): 스토브 회원 탈퇴 항목이 노출돼요.


게스트 계정: 스토브 계정 연결 화면이 노출돼요. 게스트 소실 방지를 위해 계정 연결 기능은 반드시 제공해야 해요.

연동 가이드


사전 준비

항목내용
이용자 로그인 상태인게임 메뉴 기능은 이용자 로그인 완료 이후 호출 가능
파트너스 설정고객센터·커뮤니티 사용 시 파트너스 사전 설정 필요
이용약관 URL 준비이용약관 고지 기능 사용 시, 파트너스에 약관 등록 후 노출용 URL 확보
기능 구현 범위 확정서버 초기화·게임 해지·로그아웃 등 구현 여부 사전 확정

개발하기


SDK 연동

계정 설정 화면 구성하기

인게임 내 '설정 > 계정' 화면을 구성할 수 있어요. 계정 상태(게스트/정회원)에 따라 SDK가 자동으로 다른 UI를 표시해줘요.

결과 분기 처리
콜백에서 받은 result로 다음 분기를 직접 처리하세요.

  • 성공 + userInfo["userAction"] == "withdraw" → 스토브 회원 탈퇴 완료 상태예요. SDK가 자동 로그아웃을 수행하므로, 게임 시작 화면으로 즉시 이동시켜 재로그인을 유도하세요.
  • 실패(취소 등) 후 게스트 → 정회원 전환 발생 → 호출 전 IsGuest() 값과 콜백 후 accessToken.User.IsGuest() 값을 비교해 전환 여부를 판단하고, accessToken.User.VerifiedDevice 값으로 기기 등록 단계로 보낼지 결정하세요.
csharp
public void ManageAccount()
{
    bool isGuest = false;
    if (Auth.AccessToken != null)
    {
        isGuest = Auth.AccessToken.User.IsGuest();
    }

    AuthUI.ManageAccount((Result result) =>
    {
        if (result.IsSuccessful)
        {
            if (result.UserInfo != null && result.UserInfo.TryGetValue("userAction", out string userAction))
            {
                if (!string.IsNullOrEmpty(userAction) && userAction.Equals("withdraw"))
                {
                    //회원탈퇴 완료 - 자동 로그아웃되므로 게임 종료 or 초기화면 이동
                    Login();
                }
            }
        }
        else
        {
            AccessToken accessToken = Auth.AccessToken;
            if (accessToken != null)
            {
                if (!accessToken.User.IsGuest() && isGuest)
                {
                    //계정 연결하기 완료 - 기기등록 확인
                    if (Auth.AccessToken.User.VerifiedDevice) {
                        //등록된 기기
                    } else {
                        Login();
                    }
                }
            }
        }
    });
}

로그아웃

Auth.logout은 SDK 내부의 accessToken과 저장소의 토큰 파일을 모두 삭제해요.

  • 게스트 계정 주의: 게스트는 로그아웃하면 같은 계정을 다시 찾을 방법이 없어요.
  • 로그아웃 후에는 게임 최초 동선(시작 화면)으로 이동해서 재로그인을 유도하는 걸 권장해요.
  • v1 SDK는 로그아웃 후 게스트 로그인 시 동일 계정, v2 SDK는 신규 계정으로 동작해요.

csharp
public void Logout()
{
    Auth.Logout();
}

스토브 회원 탈퇴

AuthUI.withdraw를 호출하면 Marina(Auth) 서버에 탈퇴 요청을 보내고 성공 시 자동으로 로그아웃돼요. 탈퇴 완료 후에는 게임 최초 동선(시작 화면)으로 이동해서 재로그인을 유도하세요.

실패 시 처리
result.IsSuccessful == false인 경우 직접 에러 메시지를 띄우지 말고 OperationUI.HandleResult(result, ...)에 위임하세요. SDK가 제재·휴면·네트워크 등 사유에 맞는 화면을 자동으로 노출해요. 성공 시에는 자동 로그아웃되므로 별도로 Auth.logout을 호출하지 마세요.


csharp
public void Withdraw()
{
    AuthUI.Withdraw(result =>
    {
        if (result.IsSuccessful)
        {
            //회원탈퇴 완료 - 자동 로그아웃되므로 게임 종료 or 초기화면 이동
        }
        else
        {
            OperationUI.HandleResult(result, (Result operationResult) =>
            {
                /** ex) 현재 화면 유지 및 회원탈퇴 재시도 유도 **/
            });
        }
    });
}

쿠폰 사용 (Android만 가능)

ViewUI.coupon을 호출하면 스토브 쿠폰 입력 화면이 노출돼요. Android 전용 기능이라 iOS에서는 제공되지 않아요.

게임 앱에서는 쿠폰창 호출 외 별도 작업이 필요 없지만, 게임 서버에서 아이템 지급(쿠폰) 요청 처리가 필요해요.
자세한 내용은 게임 서버 — 아이템박스 연동 가이드를 참고하세요.


csharp
public void Coupon()
{
    ViewUI.Coupon((Result result, Dictionary<string, string> dictionary) =>
    {
        if (result.IsSuccessful)
        {
        }
        else
        {
            OperationUI.HandleResult(result, (Result operationResult) =>
            {
                /** ex) 현재 화면 유지 **/
            });
        }
    });
}

고객센터

ViewUI.customerSupport를 호출하면 로그인 유지 상태로 고객센터 페이지가 WebView로 노출돼요. SDK가 내부적으로 onlineAccessToken을 발급받아 SSO 연동을 처리해요.

로그인 상태 필요
SDK가 SSO 연동을 위해 onlineAccessToken을 발급받으므로, 호출 전에 반드시 Auth.login이 완료된 상태여야 해요. 미로그인 상태에서 호출하면 인증 실패로 페이지가 정상 노출되지 않아요. 호출 전에 Auth.AccessToken != null을 확인하세요. 실패 콜백은 OperationUI.HandleResult(result, ...)에 위임해 처리하세요.


csharp
public void CustomerSupport()
{
    ViewUI.CustomerSupport((Result result, Dictionary<string, string> dictionary) =>
    {
        if (result.IsSuccessful)
        {
        }
        else
        {
            OperationUI.HandleResult(result, (Result operationResult) =>
            {
                /** ex) 현재 화면 유지 **/
            });
        }
    });
}

회원번호 조회

로그인된 이용자의 스토브 회원번호(userId)를 AccessToken.user.userId로 가져올 수 있어요. 미로그인 상태에서는 accessToken이 null이므로 조회 전 체크가 필요해요.


csharp
private string UserId()
{
    AccessToken accessToken = Auth.AccessToken;
    if(accessToken == null)
    {
        return "";
    }
    return accessToken.User.UserId;
}

회원 전환

게스트·서드파티 계정을 정회원으로 전환하거나 스토브 정회원과 연결할 때 사용해요. AuthUI.manageAccount 화면에서 자동 진입되거나, 아래 API를 직접 호출해 독립 화면으로 노출할 수 있어요.


스토브 정회원 전환 (AuthUI.switchAccount)

서드파티 계정을 스토브 정회원으로 전환하는 화면이에요. 서드파티 계정 로그인 이후에 호출 가능해요.


csharp
public void SwitchAccount()
{
    if (Auth.AccessToken != null) {
        AuthUI.SwitchAccount((Result result) =>
        {
            if (result.IsSuccessful)
            {
                //계정 이전 성공
            }
            else
            {
                //계정 이전 실패
            }
        });
    }
}

게스트 → 정회원 연결 (AuthUI.link)

게스트 계정을 정회원 계정으로 연결하는 기능이에요. 계정 관리 화면의 '정회원 전환하기'와 동일한 기능이며, 게스트 계정인 경우에만 호출을 권장해요. (게스트가 아닌 경우 '채널 연결하기'가 노출돼요.)


csharp
public void link()
{
    if (Auth.AccessToken != null) {
        AuthUI.Link((Result result) =>
        {
            if (Auth.AccessToken.User.IsGuest())
            {
                // 게스트 유지 (정회원 전환 미완료)
            }
            else
            {
                // 정회원 전환 성공
            }
        });
    }
}

언어 설정

플랫폼 노출 언어(19종)를 변경해요. 게임 언어 변경 시 스토브 플랫폼도 함께 변경되도록 연동하세요.

알림 설정

푸시 알림(주간/야간) On·Off 및 푸시 설정 조회 기능이에요.

인게임 내 이용약관 고지

인게임에서 스토브 이용약관을 노출하는 기능이에요. 별도 원본 자료를 받으면 상세 구현 가이드를 채울 수 있어요.

커뮤니티 연결

인게임에서 스토브 커뮤니티를 팝업으로 노출하거나, 특정 커뮤니티 URL을 로그인 유지 상태로 호출할 수 있어요.

기기 등록 서비스

이용자의 기기 등록 상태 확인과 기기 관리 화면 노출 기능이에요. deviceRegistrationPolicyverifiedDevice 속성으로 상태를 판단해요.

자주 묻는 질문



Q1. '게임탈퇴(이용해지)'와 '스토브 회원탈퇴'는 어떻게 다른가요?
A. 스토브 회원탈퇴는 스토브 계정과 연결된 모든 서비스에서 탈퇴되는 기능이에요.
반면 게임탈퇴(이용해지)는 탈퇴하는 해당 게임에서만 탈퇴되며, 다른 게임에는 영향을 주지 않아요.
둘 다 이용자의 실수를 방지하는 "경고 안내" 기능을 반드시 구현해야 해요.
Q2. 게스트 계정에서 로그아웃하면 어떻게 되나요?
A. 게스트 계정은 로그아웃하면 계정을 찾을 수 있는 방법이 없어요.
v2 환경에서는 로그아웃 후 게스트 로그인 시 신규 계정이 생성돼요.
이용자의 실수를 방지하기 위해 게스트 로그아웃 시 반드시 "경고 안내" 화면을 제공해야 해요.
게스트 소실을 방지하려면 계정 연결 기능을 필수로 제공하는 것을 권장해요.
Q3. 인게임 이용약관 고지는 어떤 방법으로 구현해야 하나요?
A. SDK에서 별도의 이용약관 화면을 제공하지 않으므로, 두 가지 방법 중 하나를 선택해 구현해요.
[1안] 파트너스에서 이용약관 전용 카테고리를 생성하고 고객센터를 통해 노출하는 방법과,
[2안] 인게임 내에 별도 버튼을 만들어 이용약관 URL을 직접 호출하는 방법이에요.
등록 절차와 가이드는 게임기술담당자(CSM팀)에서 안내해 드려요.
Q4. 커뮤니티를 호출했는데 노출되지 않아요.
A. 커뮤니티가 정상적으로 노출되려면 파트너스에 커뮤니티가 사전 세팅되어 있어야 하고,
SDK Config의 VIEW > community_id에 파트너스에 세팅된 키값이 등록된 상태여야 해요.
두 가지 조건을 모두 확인해 주세요. 커뮤니티 세팅 여부 및 URL은 사업 담당자에게 문의하세요.
Q5. 알림 설정이 필수 구현 항목인 이유는 무엇인가요?
A. 국내 개인정보 보호 정책과 Apple Review Guideline(4.5.4) 등 플랫폼사 정책 준수를 위해 필수로 제공해야 해요.
특히 푸시 알림은 이용자가 앱 UI를 통해 명시적으로 수신에 동의한 경우에만 발송할 수 있으며, 홍보나 직접 마케팅 목적으로 남용 시 권한을 박탈당할 수 있어요.
Q6. 계정탈퇴 기능 사용 시 GUID 기반 게임에서 주의할 점이 있나요?
A. GUID 기반 게임에서 계정탈퇴 기능을 사용하면, 이후 이용자가 동일 기기에서 재가입 시 신규 GUID가 발급되어 동일 이용자로 구분이 어렵게 돼요.
지표 왜곡을 방지하려면 스토브 정보삭제(게임탈퇴) API 대신 스토브 캐릭터 삭제 API를 사용하여 "게임탈퇴" 기능을 구현하는 방법을 고려해 주세요.
구현 방법은 사업/기획 담당자와의 논의 후 메뉴 기획 의도에 맞춰 적용해 주세요.
Q7. 기기 등록 팝업이 노출되지 않는데 어떻게 확인하나요?
A. 우선 SDK Auth-ui v2.7.2 이상 버전을 사용하고 있는지 확인해 주세요.
파트너스 > GM > SDK Config 설정에서 device_setup_exemption 값이 false로 설정되어 있어야 기기 등록 팝업이 노출돼요.
true로 설정되어 있으면 팝업이 미노출 상태가 돼요. 그래도 해결되지 않으면 게임기술담당자(CSM팀)에 문의해 주세요.



직접 문의하고 싶으신가요? stove.developers@smilegate.com