Version: 2017.3
CloudMoolah MOO Store
Unity 채널 SDK 및 API 확장 프로그램

Unity IAP Xiaomi 통합 가이드

개요

Unity IAP는 중국 밖에 있는 개발자가 중국 시장에서 앱을 효율적으로 퍼블리시할 수 있는 채널을 제공합니다. 이 가이드에서는 Unity 채널 SDK를 소개하고 개발자가 IAP 콘텐츠를 Xiaomi Mi Game Center 플랫폼에 퍼블리시하는 전체 절차에 대해 설명합니다.

Mi Game Center에 게임을 퍼블리시하는 절차는 다음 3단계로 구성됩니다.

  1. Xiaomi에서 설정한 게임 패키지를 Unity 클라우드 빌드를 통해 제출합니다.
  2. Xiaomi-Unity 개발자 포털에서 게임의 스토어 메타데이터를 입력합니다.
  3. Xiaomi에서 승인하면 게임을 출시합니다.

Xiaomi Mi Game Center

Mi Game Center는 Xiaomi의 공식 Android 스토어입니다. 여기에서 사용자는 보안 결제 포털을 사용하여 Xiaomi 플랫폼용 상품을 찾아보고 구매할 수 있습니다. 자세한 내용은 Unity 에디터의 Xiaomi 파트너 웹사이트를 참조하십시오.

Unity 채널

Unity 채널은 사용자 로그인, 결제 관리, 그리고 중국 정부의 앱 배포 규제 승인을 용이하게 하여 중국 밖에 있는 개발자가 중국 앱 스토어 시장에 접근하는 데 도움이 되는 Unity IAP의 구성 요소입니다.

Xiaomi Mi Pay 통합은 Unity 채널로 인해 Google Play 및 iTunes와 다음과 같은 면에서 다릅니다.

  • Xiaomi 게임에는 Unity IAP 카탈로그가 필요합니다. Google Play와 iTunes는 완전히 백엔드에서 정의되는 상품을 지원합니다. 하지만 Unity IAP에 내장된 Xiaomi 클라이언트 SDK는 클라이언트에서 제공되는 상품 ID와 메타데이터에 따라 다릅니다.
  • 코드리스 IAP 지원이 계획되어 있지만 아직 제공되지 않습니다. 포럼에서 최신 소식을 확인하십시오.
  • Unity IAP 초기화 중에는 상품 소유권 정보가 클라이언트로 반환되지 않습니다. 그러므로 개발자는 자체 서버를 통해서나 기기에서 로컬로 사용자 구매를 추적해야 합니다.

요구 사항

  • Unity 채널 SDK는 Unity 2017.1 버전 이상과 함께 사용하도록 고안되었지만, Unity 5.3 이상 버전과도 역호환됩니다.
  • Unity 채널 SDK는 Unity IAP 1.13.0 버전 이상에 포함되어 있습니다.
  • Xiaomi IAP 지원은 Android 빌드에서만 가능합니다. 해당 Android 및 Java SDK가 필요합니다.
  • Xiaomi로 빌드를 푸시하려면 Unity 클라우드 빌드 서비스가 필요합니다.
  • Xiaomi는 현재 코드리스 IAP 구현을 지원하지 않습니다.

Xiaomi용으로 프로젝트 빌드

아래에서는 Unity IAP SDK를 사용하여 Unity 에디터를 통해 게임을 설정하는 방법에 대해 설명합니다.

  • 프로젝트 설정
  • 프로젝트에 Xiaomi 패키지 추가
  • IAP 활성화
  • IAP 카탈로그 생성

프로젝트 설정

Android 설정

Xiaomi는 Android 빌드만 지원합니다. 프로젝트를 Android용으로 설정하는 절차는 다음 네 단계로 구성됩니다.

  1. AndroidJava SDK를 다운로드하여 설치합니다. 자세한 내용은 Android 개발 시작 문서를 참조하십시오.
  2. SDK 파일 경로 타겟을 설정합니다. Unity 에디터에서 Edit > Preferences 를 선택한 다음 왼쪽 탐색 표시줄에서 External Tools 를 선택합니다. Android 섹션까지 아래로 스크롤하여 SDKJDK 필드를 Android 및 Java SDK가 각각 설치된 파일 경로를 나타내도록 설정합니다. 아래의 그림 1.1을 참조하십시오. 각 SDK의 다운로드 웹페이지로 직접 연결되는 각 필드 옆의 Download 버튼을 선택할 수 있습니다.
  3. 애플리케이션 패키지 이름을 설정합니다. Xiaomi에서는 “BuildName.mi” 규칙을 따르는 애플리케이션 Package Name 을 요구합니다. Edit > Project Settings > Player 를 선택하여 플레이어 설정 창을 엽니다. 그런 다음 Android 탭(아래 그림 참조)을 선택하고 Other Settings > Identification 에서 Package Name 필드(아래 그림 1.2 참조)를 설정합니다.
  4. 프로젝트를 Android용으로 빌드합니다 에디터에서 File > Build Settings 를 선택한 다음 메뉴에서 Android 를 선택합니다. Build 를 선택하여 Unity 에디터가 SDK를 찾고 빌드를 컴파일할 수 있는지 테스트합니다.
그림 1.1: Unity 에디터에서 Android 및 Java SDK 파일 위치 지정
그림 1.1: Unity 에디터에서 Android 및 Java SDK 파일 위치 지정
그림 1.2: Unity 에디터 Android 설정에서 앱 패키지 이름 설정
그림 1.2: Unity 에디터 Android 설정에서 앱 패키지 이름 설정

프로젝트에 Xiaomi 에셋 패키지 추가

에디터의 서비스 창(Window > Services)에서 Unity IAP를 활성화합니다. Unity IAP 설정 문서를 참조하십시오. 메시지가 나타나면 IAP 에셋 패키지를 임포트해야 합니다(아래 그림 참조). 1.13.0 버전 기준으로 Unity IAP 에셋 패키지에는 Unity 채널 및 Xiaomi SDK가 포함되어 있습니다.

Unity 에디터의 서비스 창을 통해 Unity IAP를 활성화하고 Xiaomi SDK 임포트
Unity 에디터의 서비스 창을 통해 Unity IAP를 활성화하고 Xiaomi SDK 임포트

[선택 사항] 스탠드얼론 SDK

앱을 인앱 구매 없이 Mi Game Center에 퍼블리시하려면 빌드 설정 창(File > Build Settings)의 Platform 메뉴에서 Android 를 선택한 후, 나타나는 Xiaomi Game Center 메뉴 옵션에서 Add 를 선택하여 Xiaomi Unity 채널 스탠드얼론 SDK를 설치합니다.

Build Settings 창에서 Unity 채널 스탠드얼론 SDK 설치
Build Settings 창에서 Unity 채널 스탠드얼론 SDK 설치

앱 스토어 설정

Unity 채널에는 앱 스토어 자격 증명과 테스트 모드 기능을 관리하는 에디터 인터페이스를 제공하는 에셋이 포함되어 있습니다. 이 AppStoreSettings 에셋은 Unity IAP 에셋 패키지를 임포트할 때 Assets/Plugins/UnityChannel/XiaomiSupport/Resources 에 설치됩니다. 에디터에서 Assets > Create > App Store Settings 를 선택하여 에셋을 수동으로 생성할 수도 있습니다. 에셋을 선택하고 인스펙터를 확인하여 인터페이스에 액세스할 수 있습니다.

AppStoreSettings 에셋은 앱 자격 증명 관리를 위한 GUI를 제공합니다.
AppStoreSettings 에셋은 앱 자격 증명 관리를 위한 GUI를 제공합니다.

참고: AppStoreSettings 에셋은 Unity 5.6 이상에서만 사용할 수 있습니다.

통신하기 위해서는 Unity 및 Xiaomi 서버에 모두 게임의 고유 식별자가 필요합니다. 여기에서 프로젝트 ID를 검색 필드에 붙여 넣어 Unity 클라이언트 자격 증명을 검색해서 가져올 수 있습니다. Unity 5.3 또는 5.4 사용자는 AppStoreSettings 에셋에 액세스할 수 없으므로 이 방법으로 자격 증명을 검색해서 가져오고 설정해야 합니다. 위 그림에 나와 있는 설정에 대해서는 아래에서 설명합니다.

  1. Generate Unity Client 버튼을 누르면 프로젝트에 연결된 Unity 자격 증명이 자동으로 입력됩니다.

    참고: Unity 클라이언트 자격 증명을 생성하거나 로드하거나 업데이트하면 네트워크 요청이 Unity 에디터의 백엔드 서버로 전송됩니다. 이 작업의 프로세스는 콘솔 로그에 표시됩니다.

  2. Client IDClient Key 는 Unity IAP를 통해 Unity 채널과 Xiaomi 백엔드와 통신하는 데 필요합니다. Unity 채널 백엔드는 영수증 검증 요청을 대행합니다. 자세한 내용은 Unity IAP 영수증 검증 문서와 Unity 채널 SDK 문서의 Receipt validation and extensions 섹션을 참조하십시오.
  3. Client RSA Public Key 는 선택적인 보안 레이어입니다. 서버 측 영수증 검증을 위한 서버 콜백을 수신하거나 Unity 서버 API와 통합하는 데 사용합니다.

    참고: Client Secret 는 서버 측 확인을 구현하려는 경우에 사용 가능한 또다른 선택적인 보안 레이어입니다. Client Secret 는 다른 자격 증명과 함께 자동으로 생성됩니다. AssetStoreSettings 에셋에서 Update Client Secret 을 선택하여 언제든지 새로 고칠 수 있습니다.

  4. 게임 서버에서 구매 거래 데이터를 수신할 선택적인 Callback URL 을 지정합니다.
  5. Xiaomi에서 제출 프로세스 중에 App ID, App Key, App Secret 자격 증명을 배포합니다. 최종 빌드를 퍼블리시하기 위해 제출하기 전에 자격 증명을 앱 스토어 설정에 저장해야 합니다.
  6. Test Mode애플리케이션의 구매 흐름을 테스트하고 Xiaomi에 제출하는 데 필요합니다.

이런 자격 증명과 텍스트 모드 토글은 통합 절차의 여러 시점에서 필요합니다. 앱 스토어 설정 데이터는 클라이언트에 저장되지 않고 서버 쪽에서 업데이트됩니다.

IAP 구현

Unity IAP 서비스 활성화

Unity IAP에서 Xiaomi 에셋 패키지를 임포트할 수 있게 설정한 경우 별다른 작업이 요구되지 않습니다. 그 외에의 경우에는 Unity IAP 설정 문서를 참조하여 서비스를 활성화합니다.

Unity 에셋 스토어를 통해 최신 Unity IAP 플러그인을 설치할 수도 있습니다.

상품 카탈로그 생성

Unity IAP에 내장된 Xiaomi 클라이언트 SDK는 클라이언트에서 사용 가능한 상품 메타데이터에 따라 다릅니다. 따라서 에디터의 IAP 카탈로그 GUI(Window > Unity IAP > IAP Catalog)를 통해 상품을 정의해야 합니다.

IAP 카탈로그 창에는 앱의 상품 카탈로그를 빌드하고 익스포트하는 GUI가 있습니다.
IAP 카탈로그 창에는 앱의 상품 카탈로그를 빌드하고 익스포트하는 GUI가 있습니다.

카탈로그 채우기 IAP 카탈로그 GUI는 상품을 게임 클라이언트의 런타임 시점에 대한 메타데이터와 함께 정의합니다. 코드리스 IAP 문서에는 IAP 카탈로그를 통한 상품 설정에 대한 내용이 설명되어 있습니다. 특히 Xiaomi의 경우 다음 상품 속성에 주의를 기울일 필요가 있습니다.

IAP 카탈로그 에디터 분석
IAP 카탈로그 에디터 분석
  1. ID 는 Mi Game Center에서 요구하는 고유 식별자(문자열 데이터 타입)입니다.
  2. Type 은 상품의 내구성을 나타냅니다. Xiaomi는 소모품 및 비소모품 상품 타입을 지원합니다. 구독 상품 타입은 지원하지 않습니다.
  3. Descriptions 섹션에 따라 Mi Store에서 사용할 TitleDescription 텍스트가 결정됩니다. Locale 드롭다운 메뉴에서 Simplified Chinese 를 지정해야 합니다. 현재는 이 언어만 지원됩니다.
  4. Pay Configuration 에 따라 상품의 가격점이 결정됩니다. Unity 채널 SDK는 Xiaomi의 미리 정의된 중국 위안 가격대를 지원하지만, 임의 값은 지원하지 않습니다.

상품 속성과 각 속성의 파라미터에 대한 자세한 내용은 상품 정의 문서를 참조하십시오.

Xiaomi 개발자 포털로 카탈로그 익스포트

데이터의 IAP Catalog 창에서 App Store Export > Xiaomi Mi Pay Catalog 를 선택하여 카탈로그를 익스포트합니다.

앱의 상품 카탈로그를 Xiaomi 개발자 포털로 익스포트
앱의 상품 카탈로그를 Xiaomi 개발자 포털로 익스포트

MiGameProductCatalog.prop 파일을 원하는 위치로 익스포트합니다. 프로젝트의 IAP Configuration 탭으로 이동한 후 Import 를 선택하여 Xiaomi 개발자 포털에서 상품 카탈로그를 임포트합니다. 아래의 IAP 상품 카탈로그 임포트 섹션을 참조하십시오.

MiGameProductCatalog.prop 파일을 인터페이스로 읽어오는 Xiaomi 개발자 포털의 예
MiGameProductCatalog.prop 파일을 인터페이스로 읽어오는 Xiaomi 개발자 포털의 예

IAP 카탈로그를 익스포트하면 MiGameProductCatalog.prop 파일의 복사본이 프로젝트의 Assets/Plugins/Android/assets/ 디렉토리(아래 그림 참조)에 기록되기도 합니다. Unity IAP는 이 파일을 IAP 카탈로그 에디터에서 사용하고 런타임 시점에 사용합니다. 이 파일은 Xiaomi 개발자 포털을 통해 명시적으로 임포트되는 카탈로그 파일이 없는 경우 앱의 기본 상품 카탈로그로도 사용됩니다.

익스포트된 상품 카탈로그
익스포트된 상품 카탈로그

클라이언트 측 초기화

Unity IAP는 일반적으로 Unity IAP Initialize() API에 이어 대상 스토어를 위해 IAP 카탈로그 데이터를 분석하여 적용할 설정 빌더가 필요합니다. IAP 초기화 문서를 참조하십시오.

Xiaomi 게임은 IAP를 초기화하기 전에 추가 단계가 필요합니다. Mi Game Center에서는 앱이 실행될 때 로그인 API를 통해 자격 증명을 공유해야 하기 때문입니다.

수정된 초기화 절차는 다음과 같습니다.

  1. Unity 채널 Xiaomi API를 초기화합니다.
  2. Unity 채널 Xiaomi API에 로그인합니다.
  3. 설정 빌더 인스턴스를 실행하여 Unity IAP를 평소와 같이 초기화한 다음 Unity IAP initialize() API를 호출합니다.

위 절차를 게임 런타임 라이프사이클의 초기에 실행하십시오. 시작할 때 실행하는 것이 좋습니다. 같은 스크립트에서 구현할 수 있습니다.

1. Xiaomi 로그인

다음은 Unity 채널 SDK를 사용해서 초기화를 수정하여 로그인 API를 호출하는 예제입니다.

using AppStoreSupport;
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Purchasing;
using UnityEngine.Store;

// Run the script once, at game launch.
public class UnityChannelSample : MonoBehaviour
{
    // Xiaomi login requires a login listener.
    // Create one by implementing the ILoginListener abstract class included in the Unity Channel SDK.
    class SampleLoginListener : ILoginListener
    {
        public Action initializeIAP;

        // Step 1 succeeded; call step 2
        public void OnInitialized()
        {
            Debug.Log("Initialization succeeded.");
            UnityEngine.Store.StoreService.Login(this); // If initialization succeeds, initiate Xiaomi login
        }

        // Step 1 failed; display error message and recourses
        public void OnInitializeFailed(string message)
        {
            Debug.Log("Initialization failed.");
        }

        // Step 2 completed; call step 3
        public void OnLogin(UserInfo userInfo)
        {
            Debug.Log(string.Format("Login successful: userId {0}, userLoginToken {1}, channel {2}", userInfo.userId, userInfo.userLoginToken, userInfo.channel));
            // When login succeeds, proceed to initializing IAP
initializeIAP(); 
        }

        // Step 2 failed; display error message and recourses
        public void OnLoginFailed(string message)
        {
            Debug.Log("Login failed.");
        }
    }
}

참고: 로그인 절차의 모든 가능한 단계를 설명하는 위 샘플 코드에 있는 함수를 모두 사용해야 합니다. 하지만 각 함수 안에서 호출되는 행동을 선택할 수 있습니다. 이 예제에서는 행동 호출 대신 디버그 텍스트가 나타납니다. 이 예제에서 OnLogin() 메서드는 Unity IAP 초기화 함수를 시작합니다.

2. Xiaomi 초기화

다음으로, 로그인 리스너와 AppStoreSettings 에셋에 저장된 앱 자격 증명을 사용하여 Xiaomi API를 초기화합니다.

    void Awake()
        {
            // Create a login listener based on the SamleLoginListener class
            SampleLoginListener loginListener = new SampleLoginListener();

            // Tie the initializeIAP Action (from the SampleLoginListener class) to a function (defined in the next step)
            loginListener.initializeIAP = ConfigureIAP;

            // Access the AppStoreSettings Asset to generate AppInfo with your stored credentials. The AppStoreSettings class is part of the AppStoreSupport library. 
            AppStoreSettings appStoreSettings = Resources.Load<AppStoreSettings>("AppStoreSettings");

            // Initialize Xiaomi using the credentials and login listener
            UnityEngine.Store.StoreService.Initialize(appStoreSettings.getAppInfo(), loginListener);
        }

프로젝트의 AppStoreSettings 에셋을 로드하면 getAppInfo() 함수에서 Mi Game Center 스토어 초기화 절차에 사용할 자격 증명 데이터를 반환합니다.

3. Unity IAP 설정 빌더 및 초기화

마지막으로, 설정 빌더를 사용하여 Xiaomi용 IAP 카탈로그의 상품 데이터를 분석한 다음 Unity IAP를 초기화합니다.

    // The configuration builder requires a store listener. 
        // Create one by implementing the IStoreListener abstract class.
        class StoreListener : IStoreListener
        {
            private IStoreController controller;
            private IExtensionProvider extensions;

            // Called when Unity IAP is ready to make purchases.
            public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
            {
                this.controller = controller;
                this.extensions = extensions;
            }

            // Note that this will not be called if Internet is unavailable;
            // Unity IAP will attempt initialization until it becomes available.
            public void OnInitializeFailed(InitializationFailureReason error)
            {
            }

            // Called when a purchase completes, or Unity IAP encounters an unrecoverable initialization error;
            // may be called at any time after OnInitialized().
            public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
            {
                return PurchaseProcessingResult.Complete;
            }

            // Called when a purchase fails.
            public void OnPurchaseFailed(Product i, PurchaseFailureReason p)
            {
            }
        }

        // Run a configuration builder to define your Products
        public void ConfigureIAP()
        {
            // Load Products from the IAP Catalog
            var module = StandardPurchasingModule.Instance();
            var builder = ConfigurationBuilder.Instance(module);
            var catalog = ProductCatalog.LoadDefaultCatalog();

            // Loop through Products in Catalog, extracting metadata to the builder
            foreach (var product in catalog.allProducts)
            {
                if (product.allStoreIDs.Count > 0)
                {
                    var ids = new IDs();
                    foreach (var storeID in product.allStoreIDs)
                    {
                        ids.Add(storeID.id, storeID.store);
                    }
                    builder.AddProduct(product.id, product.type, ids);
                }
                else
                {
                    builder.AddProduct(product.id, product.type);
                }
            }

            // Create a store listener based on the StoreListener class
            StoreListener storeListener = new StoreListener();

            // Initialize Unity IAP
            UnityPurchasing.Initialize(storeListener, builder);
        }

설정 빌더에서는 상품 ID와 상품 타입을 레퍼런스하여 가격, 타입, 제목, 설명 메타데이터 채우기를 자동화합니다. 여기에는 IAP 카탈로그의 IAPProductCatalog.json 파일과 Unity IAP 초기화 중에 인스턴스화된 builder 오브젝트가 사용됩니다.

IAP 구매 구현

게임 내에서 구매를 구현하는 방법에 대한 내용은 다음 문서를 참조하십시오.

통합 테스트

AppStoreSettings 에셋 인터페이스에서 테스트 모드를 토글하여 게임의 구매 흐름을 Xiaomi가 아닌 Android 기기에서 테스트합니다. Unity 채널은 테스트 모드 토글을 위한 API도 제공합니다.

AppInfo.debug = true;

Unity 채널 래퍼는 AppInfo 클래스를 포함하고, 데이터를 Xiaomi SDK에 전달합니다. 앱을 Xiaomi에 제출하려면 테스트 모드를 활성화해야 합니다. 테스트 모드에서는 테스트 목적을 위해 신용 카드 요구 사항도 면제됩니다. 테스트 모드를 활성화한 후 프로젝트를 빌드하고, 그 결과로 생기는 APK 파일을 Android 기기에서 실행합니다.

실제 구매를 테스트하려면 테스트 모드를 false로 설정하고 Xiaomi 기기에서 테스트합니다. 실제로 구매하려면 Xiaomi Mi Pay 계정과 중국 위안 같은 적절한 화폐가 필요합니다.

Xiaomi에 제출

아래에서는 Unity IAP SDK를 사용하여 Unity 에디터를 통해 게임을 제출하는 절차에 대해 설명합니다.

  1. IAP 타겟 설정
  2. IAP 통합 테스트
  3. 애플리케이션 등록
  4. 게임을 Xiaomi 포털로 푸시

IAP 타겟 설정

Unity 에디터에서 Window > Unity IAP > Android > Target Xiaomi Mi Game Pay 를 선택하여 Unity IAP의 타겟을 Mi Game Pay로 설정합니다. 이렇게 하면 게임 APK의 다음 빌드를 Xiaomi를 타겟으로 제작할 수 있습니다. 런타임 시점에 Xiaomi Mi Pay 네이티브 청구 API를 사용해야 함을 Unity IAP에 알리는 설정 파일도 생성됩니다.

앱 빌드의 다음 구성 중에 Xiaomi Mi Game Pay를 타겟으로 지정하도록 Unity IAP 설정
앱 빌드의 다음 구성 중에 Xiaomi Mi Game Pay를 타겟으로 지정하도록 Unity IAP 설정

Xiaomi 개발자 포털로 프로젝트 푸시

Xiaomi를 푸시하기 전에 게임을 빌드하는 것을 로컬에서 테스트하거나, Unity 클라우드 빌드(클라우드 빌드 문서 참조)에서 프로젝트의 빌드 타겟을 Android로 설정하여 테스트합니다.

에디터에서 Unity 서비스 창을 통해 클라우드 빌드를 활성화합니다. 클라우드 빌드 구현 문서를 참조하십시오.

빌드 업로드

다음 두 가지 방법 중 하나로 빌드를 프로젝트 빌드 이력에 업로드합니다.

에디터에서:

  1. Cloud Build 서비스 창에서 Manage Target Builds > Add New Target 을 선택합니다.
  2. TARGET SETUP 메뉴에서 PLATFORM 필드를 Android 로 설정하고 TARGET LABEL 을 입력합니다. 그런 다음 Next: Save 를 선택합니다.
  3. Start Cloud Build 를 선택한 다음 방금 생성한 타겟 빌드를 선택합니다.
에디터를 통해 클라우드 빌드 업로드
에디터를 통해 클라우드 빌드 업로드

Unity 클라우드 빌드 개발자 대시보드에서:

  1. 프로젝트의 Cloud Build History 로 이동합니다.
  2. Upload 를 선택한 다음 에디터에서 빌드한 APK 파일을 선택합니다.
개발자 대시보드를 통해 클라우드 빌드 업로드
개발자 대시보드를 통해 클라우드 빌드 업로드

빌드를 Xiaomi로 푸시

다음 두 가지 방법 중 하나를 사용하여 호스트된 빌드를 Xiaomi의 개발자 포털로 푸시합니다.

에디터에서:

클라우드 빌드 서비스 창의 빌드 이력 타임라인에서 원하는 빌드를 찾은 다음 Push to Xiaomi 선택합니다. 푸시하겠다고 확인하면 작업이 완료됩니다.

에디터를 통해 Xiaomi의 개발자 포털로 호스트된 빌드 푸시
에디터를 통해 Xiaomi의 개발자 포털로 호스트된 빌드 푸시

Unity 클라우드 빌드 개발자 대시보드에서:

  1. 프로젝트의 Cloud Build History 로 이동합니다.
  2. Download .APK 파일을 선택한 다음 드롭다운 메뉴에서 Push to Xiaomi 를 선택합니다.
Unity 개발자 대시보드를 통해 Xiaomi의 개발자 포털로 호스트된 빌드 푸시
Unity 개발자 대시보드를 통해 Xiaomi의 개발자 포털로 호스트된 빌드 푸시

참고: 프로젝트가 속한 조직의 소유자만 Xiaomi에 배포할 수 있습니다.

Xiaomi 개발자 포털에서 게임 설정

UDN 자격 증명을 사용하여 Xiaomi Unity 개발자 포털에서 자신이 업로드한 프로젝트에 액세스할 수 있습니다. 처음 로그인할 때는 Xiaomi의 이용 약관에 동의해야만 다음 단계로 진행되어 Projects 목록을 볼 수 있습니다. 제출할 프로젝트를 찾습니다. 아래 강조 표시된 프로젝트의 초기 상태는 Version1.0: Draft 입니다. 클립보드 아이콘을 선택하여 프로세스 전체에 걸친 프로젝트의 상태 변경 내역이 기록된 제출 로그를 확인합니다. 상태 링크를 선택하여 프로젝트의 메타데이터 세부 정보를 확장합니다.

Xiaomi 개발자 포털의 프로젝트 리스트
Xiaomi 개발자 포털의 프로젝트 리스트

이어지는 내용에서는 아래 그림에 대해 자세히 설명합니다.

Xiaomi 개발자 포털에서 프로젝트 스토어 메타데이터를 확장한 그림
Xiaomi 개발자 포털에서 프로젝트 스토어 메타데이터를 확장한 그림

1. 기본 정보

이 섹션에는 Mi Game Center에 표시되는 텍스트가 포함됩니다.

  • Game Name 은 앱의 영어 제목입니다. Xiaomi는 영어 제목을 수동으로 중국어로 번역하여 고객이 이용하는 스토어에 표시합니다.
  • Name of Developer 는 고객에 대응하는 퍼블리셔 이름입니다.
  • Game Introduction 은 앱에 대한 영어 설명입니다. Xiaomi는 영어 제목을 수동으로 중국어로 번역하여 고객이 이용하는 스토어에 표시합니다.
  • Email 은 Xiaomi에서 피드백을 받기 위해 사용하는 개발자 연락처 정보입니다.

2. 타겟 기기

이 섹션에는 Mi Game Center에 표시되는 휴대폰 및 태블릿 기기 마케팅 에셋이 포함됩니다. 다음 가이드라인을 참고하십시오.

  • 선택하는 각 기기 타입마다 이미지를 3개 이상 업로드해야 합니다.
  • 이미지 크기는1080x720 픽셀(가로) 또는 720x1080 픽셀(세로)이어야 합니다.

심의를 위해 제출

준비가 되면 Submit 을 선택해서 게임을 Xiaomi에 제출하여 심의를 받습니다. 프로젝트 상태 표시가 In review 로 바뀝니다. 프로젝트 심의 중에는 프로젝트 세부 정보를 편집할 수 없습니다. 프로젝트를 확장하여 Cancel 을 선택하면 심의를 취소하고 프로젝트 세부 정보를 수정할 수 있습니다.

지역 법규 준수

앱을 퍼블리시하려면 ISBN 출판물 라이선스가 필요합니다. Xiaomi는 SAPPRFT(국가신문출판광전총국)를 통한 ISBN 승인 절차를 포괄적으로 지원합니다.

Xiaomi는 SAPPRFT가 모든 게임을 승인할 것이라고 보장하지 않습니다. SAPPRFT 제출 가이드라인을 참조하십시오. 스토어 및 국가 준수 규칙을 지키려면 게임을 일정 부분 변경해야 할 수 있습니다.

원활한 승인 절차 통과를 위한 콘텐츠 가이드라인

중국 정부의 승인을 받기 위해 앱을 제출하는 경우 다음 팁을 고려하십시오.

  • 중국의 국가적인 랜드마크나 상징(예: 중국 국기 또는 만리장성)을 나쁘게 묘사하지 마십시오.
  • 중국의 국가 정치, 역사, 갈등, 종교에 대한 묘사를 삼가하십시오.
  • 게임 월드에서 지도와 지역을 생성할 때 중국의 기존 지리정치나 국경과 상충되는 지역을 정의하지 마십시오.
  • 어떤 종류의 도박이나 도박 기법도 묘사하지 마십시오.
  • 중국은 성인용 콘텐츠를 엄격히 제한합니다. 누드, 사실적인 폭력, 마약 사용에 대한 묘사를 삼가하십시오.
  • 미성년 음주와 흡연과 같은 불법 행위를 하는 미성년자를 묘사하지 마십시오.

IAP 상품 카탈로그 임포트

제출을 완료하기 전에 아래 절차에 따라 Xiaomi에 최신 IAP 상품 카탈로그가 있는지 확인하십시오.

  1. 프로젝트를 선택한 다음 왼쪽 탐색 표시줄에서 IAP Configuration 을 선택합니다.
  2. Import 를 선택합니다.
  3. 프로젝트에서 익스포트MiGameProductCatalog.prop 파일을 임포트합니다.
  4. 카탈로그 내용을 확인한 다음 Confirm 을 선택합니다.
  5. 임포트한 상품이 나열된 목록이 표시됩니다. Submit 을 선택하여 카탈로그를 제출 사항에 저장합니다.
IAP 카탈로그를 Xiaomi 개발자 포털로 임포트
IAP 카탈로그를 Xiaomi 개발자 포털로 임포트

Mi Game Center에 퍼블리시

자격 증명

Xiaomi가 프로젝트를 승인하면 프로젝트 상태가 Approved 로 변경되고 다음 자격 증명이 제공됩니다.

  • App ID
  • App Key
  • App Secret
Xiaomi 개발자 포털에서 승인된 프로젝트
Xiaomi 개발자 포털에서 승인된 프로젝트

자격 증명 값을 AppStoreSettings 에셋 또는 초기화 스크립트에 입력한 다음 테스트 모드false로 설정합니다. 새 게임 빌드를 생성한 후 이 빌드를 전과 같이 Xiaomi로 푸시합니다.

Xiaomi가 이메일을 통해 개발자 계약서를 제공합니다. 계약서에 서명하면 Xiaomi가 정부 승인 절차를 지원합니다. 게임에 ISBN 라이선스가 발급되고 Mi Game Center에 퍼블리시할 수 있는 허가를 받으면 Xiaomi가 알려줍니다.

Xiaomi의 콘텐츠 심의 절차에는 콘텐츠 변경이 권고되는 경우를 제외하고 일반적으로 약 1–2영업일이 소요됩니다. 하지만 정부 승인 절차와 라이선스 배포에 4–8개월이 소요될 수 있습니다. 심의 절차에 대한 자세한 내용은 Unity-Xiaomi 파트너 페이지FAQ 섹션을 참조하십시오.

CloudMoolah MOO Store
Unity 채널 SDK 및 API 확장 프로그램