앱 내 구매 및 평가판
Windows SDK는 UWP(유니버설 Windows 플랫폼) 앱에서 더 많은 수익을 창출하기 위해 다음의 기능을 구현하는 데 사용할 수 있는 API를 제공합니다.
앱 내 구매 앱이 평가판이든 아니든, 앱 내에서 바로 콘텐츠 또는 새 앱 기능을 판매할 수 있습니다(예: 게임의 다음 단계 잠금 해제).
평가판 기능 파트너 센터에서 앱을 평가판으로 구성하면 평가판 기간 동안 일부 기능을 제외하거나 제한하여 고객이 앱 정식 버전을 구매하도록 유도할 수 있습니다. 고객이 앱을 구입하기 전에 평가판 중에만 표시되는 배너 또는 워터마크와 같은 기능을 사용하도록 설정할 수도 있습니다.
이 문서는 앱 내 구매 및 평가판이 UWP 앱에서 작동하는 방식에 대한 개요를 제공합니다.
사용할 네임스페이스를 선택하세요
앱의 대상 Windows 10 또는 Windows 11 버전에 따라 앱 내 구매 및 평가판 기능을 UWP 앱에 추가하는 데 사용할 수 있는 두 가지 네임스페이스가 있습니다. 이러한 네임스페이스의 API는 동일한 목표를 제공하지만 매우 다르게 설계되었으며 코드는 두 API 간에 호환되지 않습니다.
Windows.Services.Store Windows 10 버전 1607부터 이 네임스페이스에서 API를 사용하여 앱 내 구매 및 평가판을 구현할 수 있습니다. 앱이 Visual Studio에서 Windows 10 Anniversary Edition(10.0, 빌드 14393) 이상 릴리스를 대상으로 하는 경우 이 네임스페이스의 멤버를 사용하는 것이 좋습니다. 이 네임스페이스는 Microsoft Store에서 관리하는 소모성 추가 기능과 같은 최신 추가 기능 유형을 지원하며, 파트너 센터 및 Microsoft Store에서 지원하는 향후 제품 및 기능 형식과 호환되도록 설계되었습니다. 이 네임스페이스에 대한 자세한 정보는 이 문서의 Windows.Services.Store 네임스페이스를 사용한 앱 내 구매 및 평가판 섹션을 참조하세요 .
Windows.ApplicationModel.Store 모든 버전의 Windows 10 및 Windows 11은 네임스페이스의 앱 내 구매 및 평가판에 대한 이전 API도 지원합니다. Windows.ApplicationModel.Store 네임스페이스에 대한 자세한 정보는 Windows.ApplicationModel.Store 네임스페이스를 사용하는 앱 내 구매 및 평가판을 참조하세요.
중요
Windows.ApplicationModel.Store 네임스페이스는 더 이상 새 기능으로 업데이트되지 않으므로 되도록이면 앱에서 Windows.Services.Store 네임스페이스를 대신 사용하는 것이 좋습니다. Windows.ApplicationModel.Store 네임스페이스는 데스크톱 브리지를 사용하는 Windows 데스크톱 애플리케이션 또는 파트너 센터에서 개발 샌드박스를 사용하는 앱 또는 게임(예: Xbox Live와 통합되는 모든 게임)에서 지원되지 않습니다.
기본 개념
Store에서 제공되는 모든 항목을 일반적으로 제품이라고 합니다. 대부분의 개발자는 앱 및 추가 기능 형식의 제품을 사용합니다.
추가 기능은 앱 컨텍스트에서 고객이 사용할 수 있는 제품 또는 기능을 말합니다. 예를 들어 앱 또는 게임에서 사용할 통화, 게임용 새로운 지도 또는 무기, 광고 없이 앱을 사용하는 기능, 앱에서 이용할 수 있는 음악, 비디오 등의 디지털 콘텐츠(앱에서 해당 콘텐츠 유형을 제공하는 경우) 등이 포함됩니다. 모든 앱과 추가 기능에는 사용자가 앱 또는 추가 기능을 사용할 자격이 있는지 여부를 나타내는 관련 라이선스가 있습니다. 사용자가 앱 또는 추가 기능을 평가판으로 사용할 자격이 있으면, 라이선스는 평가판에 대한 추가 정보도 제공합니다.
앱에서 고객에게 추가 기능을 제공하려면 Microsoft Store에서도 알고 있도록 파트너 센터에서 앱에 대한 추가 기능을 정의해야 합니다. 그런 다음, 앱은 Windows.Services.Store 또는 Windows.ApplicationModel.Store 네임스페이스의 API를 사용하여 사용자에게 앱 내 구매로 판매할 추가 기능을 제공할 수 있습니다.
UWP 앱은 다음과 같은 형식의 추가 기능을 제공할 수 있습니다.
추가 기능 형식 | 설명 |
---|---|
지속성 | 파트너 센터에서 지정하는 수명 동안 지속되는 추가 기능입니다. 기본적으로 지속성 추가 기능은 만료되지 않으며, 이 경우 한 번만 구매할 수 있습니다. 추가 기능에 대한 특정 기간을 지정하는 경우 사용자는 추가 기능이 만료된 후 다시 구독할 수 있습니다. |
개발자 관리 소모품 | 구매하고, 사용하고, 모두 소비한 후 다시 구매할 수 있는 추가 기능입니다. 추가 기능이 표시하는 항목의 사용자 잔액을 추적할 책임은 개발자에게 있습니다.사용자가 추가 기능과 관련된 모든 항목을 소비할 때 개발자는 사용자의 잔액을 유지하고 사용자가 항목을 모두 소비한 후 추가 기능 구매를 처리된 것으로 Microsoft Store에 보고할 책임이 있습니다. 앱이 이전 추가 기능 구매가 이행된 것으로 보고하기 전까지 사용자는 추가 기능을 다시 구매할 수 없습니다. 예를 들어 추가 기능이 게임에서 100개의 동전을 나타내고 사용자가 10개의 동전을 사용하는 경우, 앱 또는 서비스는 90개 동전이라는 사용자의 새로운 잔액을 유지해야 합니다. 사용자가 100개 동전을 모두 사용한 뒤, 추가 기능이 처리된 것으로 앱이 보고하고 나면 사용자가 100개 동전 추가 기능을 다시 구매할 수 있습니다. |
Store 관리 소모품 | 언제든지 구매하고 사용한 후 다시 구매할 수 있는 추가 기능입니다. Microsoft Store는 추가 기능이 나타내는 항목의 사용자 잔액을 추적합니다.사용자가 추가 기능과 관련된 모든 항목을 사용할 때 개발자는 해당 항목을 처리된 것으로 Store에 보고해야 하며, Store는 사용자 잔액을 업데이트합니다. 사용자는 원하는 만큼 추가 기능을 구입할 수 있습니다(항목을 먼저 소비할 필요는 없음). 앱은 언제든지 사용자의 현재 잔액을 쿼리할 수 있습니다. 예를 들어 게임에서 추가 기능의 초기 수량이 동전 100개이고 사용자가 동전 50개를 사용하면 앱은 추가 기능 50단위가 사용되었다고 Store에 보고하고, Store는 남은 잔액을 업데이트합니다. 그러면 사용자는 추가 기능을 다시 구입하여 동전을 100개 획득하고, 동전을 총 150개 갖게 됩니다. 참고 Store 관리 소모품을 사용하려면 앱이 Visual Studio에서 Windows 10 Anniversary Edition(10.0, 빌드 14393) 이상 릴리스를 대상으로 지정하고 Windows.ApplicationModel.Store 네임스페이스 대신 Windows.Services.Store 네임스페이스를 사용해야 합니다. |
구독 | 고객이 계속 추가 기능을 이용하기 위해 반복적으로 계속 요금을 내는 지속적인 추가 기능입니다. 고객은 언제든지 구독을 취소하여 추가 요금이 청구되지 않도록 할 수 있습니다. 참고 구독 추가 기능을 사용하려면 앱이 Visual Studio에서 Windows 10 Anniversary Edition(10.0, 빌드 14393) 이상 릴리스를 대상으로 지정하고 Windows.ApplicationModel.Store 네임스페이스 대신 Windows.Services.Store 네임스페이스를 사용해야 합니다. |
참고
패키지를 사용한 지속성 추가 기능(다운로드 가능한 콘텐츠 또는 DLC라고도 함) 등 다른 형식의 추가 기능은 제한된 일부 개발자만 사용할 수 있으며 이 설명서에서 다루지 않습니다.
Windows.Services.Store 네임스페이스를 사용하는 앱 내 구매 및 평가판
이 섹션은 Windows.Services.Store 네임스페이스의 중요한 작업과 개념에 대한 개요를 제공합니다. 이 네임스페이스는 Visual Studio에서 Windows 10 Anniversary Edition(10.0, 빌드 14393) 이상 릴리스(여기에서는 Windows 10, 버전 1607에 해당)를 대상으로 하는 앱에서만 사용할 수 있습니다. 되도록이면 Windows.ApplicationModel.Store 네임스페이스 대신 Windows.Services.Store 네임스페이스를 사용하는 앱이 좋습니다. Windows.ApplicationModel.Store 네임스페이스에 대한 자세한 정보는 이 문서를 참조하세요.
이 섹션의 내용
- Video
- StoreContext 클래스 시작하기
- 앱 내 구매 구현하기
- 평가판 기능 구현하기
- 앱 내 구매 또는 평가판 구현 테스트하기
- 앱 내 구매에 대한 영수증
- 데스크톱 브리지를 통하여 StoreContext 클래스 사용하기
- 제품, SKU 및 가용성
- Store ID
StoreContext 클래스 시작하기
Windows.Services.Store 네임스페이스에 대한 기본 진입점은 StoreContext 클래스입니다. 이 클래스는 현재 앱과 사용 가능한 추가 기능에 대한 정보 가져오기, 현재 앱 또는 추가 기능에 대한 라이선스 정보 가져오기, 현재 사용자를 위한 앱 또는 추가 기능 구매하기, 기타 작업에 사용할 수 있는 메서드를 제공합니다. StoreContext 개체를 가져오려면 다음 중 하나를 수행합니다.
단일 사용자 앱(즉, 앱을 실행한 사용자의 컨텍스트에서만 실행되는 앱)에서 정적 GetDefault 메서드를 통해 사용자에 대한 Microsoft Store 관련 데이터에 액세스하는 데 사용할 수 있는 StoreContext 개체를 가져옵니다. 대부분의 UWP(유니버설 Windows 플랫폼) 앱은 단일 사용자 앱입니다.
Windows.Services.Store.StoreContext context = StoreContext.GetDefault();
다중 사용자 앱에서 정적 GetForUser 메서드를 통해 앱을 사용하는 동안 해당 Microsoft 계정으로 로그인한 특정 사용자의 Microsoft Store 관련 데이터를 액세스 및 관리하는 데 사용할 수 있는 StoreContext 개체를 가져옵니다. 다음의 예시는 사용 가능한 첫 번째 사용자에 대한 StoreContext 개체를 가져옵니다.
var users = await Windows.System.User.FindAllAsync(); Windows.Services.Store.StoreContext context = StoreContext.GetForUser(users[0]);
참고
데스크톱 브리지를 사용하는 Windows 데스크톱 애플리케이션에서는 이 개체를 사용하기 전에 먼저 StoreContext 개체를 구성하는 추가 단계를 수행해야 합니다. 자세한 정보는 이 섹션을 참조하세요.
StoreContext 개체가 있으면 이 개체의 메서드 호출을 시작하여 현재 앱 및 추가 기능에 대한 Store 제품 정보를 가져오고, 현재 앱 및 추가 기능에 대한 라이선스 정보를 검색하고, 현재 사용자를 위한 앱 또는 추가 기능을 구입하고, 기타 작업을 수행할 수 있습니다. 이 개체를 사용하여 수행할 수 있는 일반적인 작업에 대한 자세한 정보는 다음의 문서를 참조하세요.
- 앱 및 추가 기능에 대한 제품 정보 가져오기
- 앱 및 추가 기능에 대한 라이선스 정보 가져오기
- 앱 내 구매 및 추가 기능 구매 사용하기
- 소모성 추가 기능 구매 사용하기
- 앱에 구독 추가 기능을 사용하도록 설정하기
- 앱의 평가판 구현하기
Windows.Services.Store 네임스페이스에서 StoreContext 및 기타 형식을 사용하는 방법을 보여 주는 샘플 앱은 Store 샘플을 참조하세요.
앱 내 구매 구현하기
Windows.Services.Store 네임스페이스를 사용하여 앱에서 고객에게 앱 내 구매를 제공하려면 다음을 수행합니다.
앱에서 고객이 구매할 수 있는 추가 기능을 제공하는 경우 파트너 센터에서 앱에 대한 추가 기능 제출을 생성합니다.
앱에서 코드를 작성하여 앱의 제품 정보 또는 앱에서 제공하는 추가 기능을 검색한 다음 라이선스가 활성 상태인지 확인(즉, 사용자에게 앱 또는 추가 기능을 사용할 라이선스가 있는지 여부를 확인)합니다. 라이선스가 활성화되지 않은 경우 앱 내 구매로 사용자에게 판매할 앱 또는 추가 기능을 제공하는 UI를 표시합니다.
사용자가 앱 또는 추가 기능을 구매하도록 선택하는 경우 적절한 방법을 사용하여 제품을 구매합니다.
- 사용자가 앱 또는 지속성 추가 기능을 구매하는 경우 앱 및 추가 기능의 앱 내 구매 사용하기의 지침을 따릅니다.
- 사용자가 소모성 추가 기능을 구매하는 경우 소모성 추가 기능 구매 사용하기의 지침을 따릅니다.
- 사용자가 구독 추가 기능을 구매하는 경우 앱에서 추가 기능 구독 사용하기 지침을 따릅니다.
이 문서의 테스트 지침에 따라 구현을 테스트합니다.
평가판의 기능 구현하기
Windows.Services.Store 네임스페이스를 사용하여 앱의 평가판 버전에서 기능을 제외하거나 제한하려면 다음을 수행합니다.
앱에 코드를 작성하여 앱의 제품 정보 또는 앱에서 제공하는 추가 기능을 검색한 다음 앱과 연결된 라이선스가 평가판 라이선스인지 확인합니다.
평가판인 경우 앱에서 특정 기능을 제외하거나 제한한 다음 사용자가 전체 라이선스를 구매할 때 기능을 사용하도록 설정합니다. 자세한 내용 및 코드 예시는 앱의 평가판 버전 구현하기를 참조하세요.
이 문서의 테스트 지침에 따라 구현을 테스트합니다.
앱 내 구매 또는 평가판 구현 테스트하기
앱 내 구매 또는 평가판 기능을 구현하기 위해 Windows.Services.Store 네임스페이스의 API를 사용하고 있다면 테스트 라이선스를 사용하기 위해 앱을 Store에 제출하고, 앱을 개발 디바이스에 다운로드해야 합니다. 다음의 프로세스에 따라 코드를 테스트합니다.
앱이 아직 게시되지 않고 Store에서 사용할 수 없는 경우 앱이 최소 Windows 앱 인증 키트 요구 사항을 충족하는지 확인하고, 파트너 센터에서 앱을 제출하여 앱이 인증 프로세스를 통과해야 합니다. 테스트하는 동안 앱이 Store에서 검색되지 않도록 구성할 수 있습니다. 패키지 플라이트의 적절한 구성에 유의하세요. 잘못 구성된 패키지 플라이트는 다운로드할 수 없습니다.
그런 다음, 다음을 완료했는지 확인합니다.
- 앱에서 StoreContext 클래스 및 Windows.Services.Store 네임스페이스의 기타 관련 형식을 사용하여 앱 내 구매 또는 평가판 기능을 구현하는 코드를 작성합니다.
- 앱에서 고객이 구매할 수 있는 추가 기능을 제공하는 경우 파트너 센터에서 앱에 대한 추가 기능 제출을 생성합니다.
- 앱의 평가판 버전에서 일부 기능을 제외하거나 제한하려면 파트너 센터에서 앱을 평가판 앱으로 구성합니다.
Visual Studio에서 프로젝트를 연 상태에서 프로젝트 메뉴를 클릭하고 Store를 가리킨 다음 Store와 앱 연결을 클릭합니다. 마법사의 지침에 따라 테스트에 사용하려는 파트너 센터 계정에서 앱 프로젝트를 앱에 연결합니다.
참고
Microsoft Store에서 프로젝트를 앱에 연결하지 않으면 StoreContext 메서드가 해당 반환 값의 ExtendedError 속성을 오류 코드 값 0x803F6107로 설정합니다. 이 값은 Store에 해당 앱에 대한 지식이 없음을 나타냅니다.
아직 설치하지 않은 경우 이전 단계에서 지정한 Store에서 앱을 설치하고 앱을 한 번 실행한 다음 이 앱을 닫습니다. 이렇게 하면 앱에 대한 유효한 라이선스가 개발 디바이스에 설치됩니다.
Visual Studio에서 프로젝트 실행 또는 디버깅을 시작합니다. 코드는 로컬 프로젝트와 연결된 Store 앱에서 앱 및 추가 기능 데이터를 검색해야 합니다. 앱을 다시 설치하라는 메시지가 표시되면 지침에 따라 프로젝트를 실행하거나 디버그합니다.
참고
이러한 단계를 완료한 후 앱의 코드를 계속 업데이트할 수 있고, 이후 새로운 앱 패키지를 Store에 제출하지 않고 개발 컴퓨터에서 업데이트된 프로젝트를 디버그할 수 있습니다. 테스트에 사용할 로컬 라이선스를 얻으려면 앱의 Store 버전을 개발 컴퓨터에 한 번만 다운로드하면 됩니다. 테스트를 완료하여 앱에서 앱 내 구매 또는 평가판 관련 기능을 고객에게 제공하려고 할 경우에만 새 앱 패키지를 Store에 제출해야 합니다.
앱에서 Windows.ApplicationModel.Store 네임스페이스를 사용하고 있다면 앱을 Store에 제출하기 전에 앱에서 CurrentAppSimulator 클래스를 사용하여 테스트하는 동안 라이선스 정보를 시뮬레이션할 수 있습니다. 자세한 정보는 CurrentApp 및 CurrentAppSimulator 클래스 시작하기를 참조하세요.
참고
Windows.Services.Store 네임스페이스는 테스트 중 라이선스 정보 시뮬레이션에 사용 가능한 클래스를 제공하지 않습니다. 앱 내 구매 및 평가판을 구현하기 위해 Windows.Services.Store 네임스페이스를 사용하고 있다면 위에서 설명한 대로 테스트 라이선스를 사용하기 위해 앱을 Store에 제출하고, 앱을 개발 디바이스에 다운로드해야 합니다.
앱 내 구매에 대한 영수증
Windows.Services.Store 네임스페이스는 앱 코드에서 성공적인 구매에 대한 트랜잭션 영수증을 얻는 데 사용할 수 있는 API를 제공하지 않습니다. 클라이언트 쪽 API를 사용하여 트랜잭션 영수증을 검색할 수 있는 Windows.ApplicationModel.Store 네임스페이스를 사용하는 앱과는 다른 환경입니다.
Windows.Services.Store 네임스페이스를 사용하여 앱에서 바로 구매를 구현하고 지정된 고객이 앱이나 추가 기능을 구매했는지 확인하려면 Microsoft Store 컬렉션 REST API에서 제품 메서드에 대한 쿼리를 사용할 수 있습니다. 이 메서드의 반환 데이터는 지정된 고객에게 지정된 제품에 대한 자격이 있는지 여부를 확인하고 사용자가 제품을 획득한 트랜잭션에 대한 데이터를 제공합니다. Microsoft Store 컬렉션 API는 Azure AD 인증을 사용하여 이 정보를 검색합니다.
데스크톱 브리지를 통하여 StoreContext 클래스 사용하기
데스크톱 브리지를 사용하는 데스크톱 애플리케이션은 StoreContext 클래스를 사용하여 앱 내 구매 및 평가판을 구현할 수 있습니다. 그러나 Win32 데스크톱 애플리케이션이나 렌더링 프레임워크(예: WPF 또는 Windows App SDK 애플리케이션)와 연결된 창 핸들(HWND)이 있는 데스크톱 애플리케이션이 있는 경우 애플리케이션에서 StoreContext 개체를 구성하여 개체에서 표시하는 모달 대화 상자에 대한 소유자 창인 애플리케이션 창을 지정합니다.
많은 StoreContext 멤버(및 StoreContext 개체를 통해 액세스되는 다른 관련 형식의 멤버)는 제품 구매와 같은 Store 관련 작업을 위해 사용자에게 모달 대화 상자를 표시합니다. 데스크톱 애플리케이션에서 모달 대화 상자의 소유자 창을 지정하도록 StoreContext 개체를 구성하지 않으면 이 개체는 부정확한 데이터 또는 오류를 반환합니다.
데스크톱 브리지를 사용하는 데스크톱 애플리케이션에서 StoreContext 개체를 구성하려면 다음의 단계를 수행합니다.
.NET 6 이상의 경우
애플리케이션이 .NET 6 이상을 사용하여 C#으로 작성된 경우 다음의 단계를 수행합니다.
프로젝트 파일의
TargetFramework
속성이 Windows 런타임 API에 액세스하기 위한 특정 Windows SDK로 설정되었는지 확인합니다. 이렇게 하면 WinRT.Interop 네임스페이스에 액세스할 수 있습니다. 예시:<PropertyGroup> <!-- You can also target other versions of the Windows SDK and .NET, e.g. "net6.0-windows10.0.19041.0" --> <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework> </PropertyGroup>
StoreContext 개체를 가져오려면 이 문서의 앞부분에서 설명한 대로 GetDefault 메서드(또는 다중 사용자 앱인 경우 GetForUser)를 사용합니다). 지정된 창 핸들을 사용하여 대화 상자를 초기화하려면 WinRT.Interop.WindowNative.GetWindowHandle 및 WinRT.Interop.InitializeWithWindow.Initialize 메서드를 사용합니다(HWND(창 핸들) 검색하기 및 CoreWindow에 종속된 WinRT UI 개체 표시하기 참조).
StoreContext context = StoreContext.GetDefault(); // Obtain window handle by passing in pointer to the window object var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(windowObject); // Initialize the dialog using wrapper function for IInitializeWithWindow WinRT.Interop.InitializeWithWindow.Initialize(context, hwnd);
이전 버전의 .NET 또는 C++의 경우
애플리케이션이 이전 버전의 .NET 또는 C++로 작성된 경우 다음의 단계를 수행합니다.
앱이 IInitializeWithWindow 인터페이스에 액세스할 수 있도록 하려면 다음 중 하나를 수행합니다.
애플리케이션이 C# 또는 Visual Basic(.NET 6 이전)과 같은 관리되는 언어로 작성된 경우, 다음의 C# 예시와 같이 ComImport 특성을 사용하여 앱 코드에서 IInitializeWithWindow 인터페이스를 선언합니다. 이 예시는 System.Runtime.InteropServices 네임스페이스에 대한 코드 파일에 using 문이 있다고 가정합니다.
[ComImport] [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IInitializeWithWindow { void Initialize(IntPtr hwnd); }
애플리케이션이 C++로 작성된 경우 코드의
shobjidl.h
헤더 파일에 대한 참조를 추가합니다. 이 헤더 파일에는 IInitializeWithWindow 인터페이스의 선언이 포함되어 있습니다.
이 문서의 앞부분에서 설명한 대로 GetDefault 메서드(또는 앱이 다중 사용자 앱인 경우 GetForUser)를 사용하여 StoreContext 개체를 가져오고 이 개체를 IInitializeWithWindow 개체로 캐스팅합니다. 그런 다음, IInitializeWithWindow.Initialize 메서드를 호출하고 StoreContext 메서드에 표시되는 모달 대화 상자의 소유자가 될 창의 핸들을 전달합니다. 다음의 C# 예시는 앱의 기본 창의 핸들을 메서드에 전달하는 방법을 보여 줍니다. 또한 창 핸들(HWND) 검색하기 및 CoreWindow에 의존하는 WinRT UI 개체 표시하기를 참조하세요.
StoreContext context = StoreContext.GetDefault(); IInitializeWithWindow initWindow = (IInitializeWithWindow)(object)context; initWindow.Initialize(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
제품, SKU 및 가용성
Store의 모든 제품에는 하나 이상의 SKU가 있으며 각 SKU에는 하나 이상의 가용성이 있습니다. 대부분의 개발자는 파트너 센터에서 이러한 개념을 도외시하며 해당 앱이나 추가 기능에 대한 SKU 또는 가용성을 정의하지 않습니다. 그러나 일부 시나리오에서는 Windows.Services.Store 네임스페이스의 Store 제품에 대한 개체 모델에는 SKU와 가용성이 포함되어 있으므로 이러한 개념을 이해하면 도움이 될 수 있습니다.
개체 | 설명 |
---|---|
Product | 제품은 앱이나 추가 기능을 포함하여 Store에서 사용할 수 있는 모든 형식의 제품을 의미합니다. Store의 제품마다 해당하는 StoreProduct 개체가 있습니다. 이 클래스는 제품의 Store ID, Store 목록의 이미지 및 비디오, 가격 정보 등의 데이터에 액세스하는 데 사용할 수 있는 속성을 제공합니다. 또한 제품을 구입하는 데 사용할 수 있는 메서드도 제공합니다. |
SKU | SKU는 자체 설명, 가격 및 기타 고유한 제품 정보가 있는 특정 버전의 제품입니다. 각 앱 또는 추가 기능에는 기본 SKU가 있습니다. 대부분의 개발자가 앱에 대해 여러 SKU를 가질 수 있는 유일한 시간은 앱의 전체 버전 및 평가판 버전을 게시하는 경우입니다(Store 카탈로그에서 이러한 각 버전은 동일한 앱의 다른 SKU임). 일부 게시자는 자체 SKU를 정의할 수 있습니다. 예를 들어 대형 게임 게시자는 빨간 피가 허용되지 않는 시장에서 초록 피를 표시하는 하나의 SKU와 다른 모든 시장에서 빨간 피가 표시된 다른 SKU를 사용하여 게임을 릴리스할 수 있습니다. 또는 디지털 비디오 콘텐츠를 판매하는 게시자는 비디오용 SKU 2개, 고화질 버전용 SKU 1개, 표준 정의 버전에 대해 다른 SKU를 게시할 수 있습니다. Store의 SKU마다 해당하는 StoreSku 개체가 있습니다. 각 StoreProduct에는 제품 SKU에 액세스하는 데 사용할 수 있는 Skus 속성이 있습니다. |
가용성 | 가용성은 고유한 가격 정보가 있는 특정 버전의 SKU입니다. 각 SKU에는 기본 가용성이 있습니다. 일부 게시자는 고유한 가용성을 정의하여 지정된 SKU에 대해 다양한 가격 옵션을 도입할 수 있습니다. Store의 가용성마다 해당하는 StoreAvailability 개체가 있습니다. 모든 StoreSku에는 SKU 가용성 액세스에 사용할 수 있는 Availabilities 속성이 있습니다. 대부분의 개발자의 경우 각 SKU에는 단일 기본 가용성이 있습니다. |
Store ID
Store의 모든 앱, 추가 기능 또는 기타 제품에는 Store ID가 연결되어 있습니다(제품 Store ID라고도 함). 많은 API가 앱이나 추가 기능에서 작동하려면 Store ID가 필요합니다.
Store에 있는 제품의 Store ID는 12자 영숫자 문자열입니다(예시: 9NBLGGH4R315
.). Store 제품의 Store ID를 찾는 여러 가지 방법이 있습니다.
- 앱의 경우 파트너 센터의 앱 ID 페이지에서 Store ID를 얻을 수 있습니다.
- 추가 기능의 경우 파트너 센터의 추가 기능 개요 페이지에서 Store ID를 얻을 수 있습니다.
- 또한 모든 제품은 해당 제품을 나타내는 StoreProduct 개체의 StoreId 속성을 사용하여 프로그래밍 방식으로 Store ID를 얻을 수 있습니다.
SKU와 가용성이 있는 제품의 경우 SKU와 가용성에 형식이 다른 Store ID가 있습니다.
개체 | Store ID 형식 |
---|---|
SKU | SKU의 Store ID는 <product Store ID>/xxxx 형식입니다. 여기서 xxxx 는 제품의 SKU를 식별하는 4자리 영숫자 문자열입니다. 예시: 9NBLGGH4R315/000N . 이 ID는 StoreSku 개체의 StoreId 속성에서 반환되며, SKU Store ID라고도 합니다. |
가용성 | 가용성의 Store ID는 <product Store ID>/xxxx/yyyyyyyyyyyy 형식입니다. 여기서 xxxx 는 제품의 SKU를 식별하는 4자리 영숫자 문자열이고, yyyyyyyyyyyy 는 SKU의 가용성을 식별하는 12자리 영숫자 문자열입니다. 예시: 9NBLGGH4R315/000N/4KW6QZD2VN6X . 이 ID는 StoreAvailability 개체의 StoreId 속성에서 반환되며, 가용성 Store ID라고도 합니다. |
코드에서 추가 기능에 대한 제품 ID를 사용하는 방법
앱 상황에 맞는 추가 기능을 고객이 사용할 수 있도록 만들려면 파트너 센터에서 추가 기능 제출을 생성할 때 추가 기능에 대한 고유한 제품 ID를 입력해야 합니다. 코드에서 추가 기능을 참조하기 위해 이 제품 ID를 사용할 수 있습니다. 그러나 앱 내 구매에 사용하는 네임스페이스에 따라 제품 ID를 사용할 수 있는 특정 시나리오가 있습니다.
참고
추가 기능을 위해 파트너 센터에서 입력하는 제품 ID는 추가 기능의 Store ID와 다릅니다. Store ID는 파트너 센터에서 생성됩니다.
Windows.Services.Store 네임스페이스를 사용하는 앱
앱이 Windows.Services.Store 네임스페이스를 사용하는 경우 제품 ID를 사용하여 추가 기능을 나타내는 StoreProduct 또는 추가 기능 라이선스를 나타내는 StoreLicense를 쉽게 식별할 수 있습니다. 제품 ID는 StoreProduct.InAppOfferToken 및 StoreLicense.InAppOfferToken 속성을 통해 공개됩니다.
참고
제품 ID는 코드에서 추가 기능을 식별하는 데 유용한 방법이지만, Windows.Services.Store 네임스페이스의 작업은 대부분 제품 ID 대신 추가 기능의 Store ID를 사용합니다. 예를 들어 프로그래밍 방식으로 하나 이상의 알려진 앱 추가 기능을 검색하려면 추가 기능의 제품 ID 대신 Store ID를 GetStoreProductsAsync에 보냅니다. 마찬가지로, 소모성 추가 기능의 기간이 종료된 것을 보고하려면 추가 기능의 제품 ID가 아닌 Store ID를 ReportConsumableFulfillmentAsync 메서드로 보냅니다.
Windows.ApplicationModel.Store 네임스페이스를 사용하는 앱
앱이 Windows.ApplicationModel.Store 네임스페이스를 사용하는 경우 대부분의 작업은 파트너 센터에서 추가 기능에 할당하는 제품 ID를 사용해야 합니다. 예시:
추가 기능을 나타내는 ProductListing 또는 추가 기능 라이선스를 나타내는 ProductLicense를 식별하려면 제품 ID를 사용합니다. 제품 ID는 ProductListing.ProductId 및 ProductLicense.ProductId 속성을 통해 공개됩니다.
사용자 대신 추가 기능을 구입할 때 RequestProductPurchaseAsync 메서드를 사용하여 제품 ID를 지정합니다. 자세한 정보는 앱 내 제품 구매 사용하기을 참조하세요.
소모성 추가 기능의 기간이 종료된 것을 보고할 때 ReportConsumableFulfillmentAsync 메서드를 사용하여 제품 ID를 지정합니다. 자세한 정보는 앱 내 소모성 제품 구매 사용하기을 참조하세요.