앱 내 구매 제품 사용하기

앱이 무료인지 여부에 관계없이 앱 내에서 바로 콘텐츠, 다른 앱 또는 새로운 앱 기능(게임의 다음 단계 잠금 해제 등)을 판매할 수 있습니다. 여기서 앱에서 이러한 제품을 사용하도록 설정하는 방법을 볼 수 있습니다.

중요

이 문서에서는 Windows.ApplicationModel.Store 네임스페이스의 멤버를 사용하여 앱 내 구매를 할 수 있도록 만드는 방법을 설명합니다. 이 네임스페이스는 더 이상 새 기능으로 업데이트되지 않으므로 Windows.Services.Store 네임스페이스를 대신 사용하는 것이 좋습니다. Windows.Services.Store 네임스페이스는 Store 관리 소모성 추가 기능 및 구독 등의 최신 추가 기능 유형을 지원하며 파트너 센터 및 Store에서 지원하는 이후 제품 및 기능 유형과 호환되도록 설계되었습니다. Windows.Services.Store 네임스페이스는 Windows 10 버전 1607에 도입되었으며 Windows 10 Anniversary Edition(10.0, 빌드 14393) 또는 Visual Studio의 최신 릴리스를 대상으로 하는 프로젝트에만 사용할 수 있습니다. Windows.Services.Store 네임스페이스를 사용하여 앱에서 바로 제품을 구매할 수 있도록 하는 방법에 대한 자세한 정보는 이 문서를 참조하세요.

참고 항목

앱 내 구매 제품은 앱의 평가판에서는 제공되지 않습니다. 앱의 평가판을 사용하는 고객은 앱의 전체 버전을 구매하는 경우에만 앱 내 제품을 구입할 수 있습니다.

필수 조건

  • 고객이 구매할 수 있는 기능을 추가할 Windows 앱.
  • 새로운 앱 내 제품을 처음으로 코딩하고 테스트할 때는 CurrentApp 개체 대신에 CurrentAppSimulator 개체를 사용해야 합니다. 이렇게 하면 라이브 서버를 호출하는 대신 라이선스 서버에 대한 시뮬레이션된 호출을 사용하여 라이선스 논리를 확인할 수 있습니다. 이렇게 하려면 %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData에 있는 WindowsStoreProxy.xml 파일을 사용자 지정해야 합니다. Microsoft Visual Studio 시뮬레이터는 앱을 처음 실행할 때 이 파일을 만들거나 런타임에 사용자 지정 파일을 로드할 수도 있습니다. 자세한 정보는 CurrentAppSimulator에서 WindowsStoreProxy.xml 파일 사용하기를 참조하세요.
  • 이 항목에서는 Store 샘플에 제공된 코드 예제도 참조합니다. 이 샘플은 UWP(유니버설 Windows 플랫폼) 앱에 제공되는 다양한 수익 창출 옵션을 사용하여 실습하기 좋은 방법입니다.

1단계: 앱에 대한 라이선스 정보 초기화하기

앱이 초기화되면 CurrentApp 또는 CurrentAppSimulator를 초기화하여 앱에 대한 LicenseInformation 개체를 가져와 앱 내 구매 제품을 구매할 수 있도록 합니다.

void InitializeApp()
{
    // Some app initialization code...

    // Initialize the license info for use in the app that is uploaded to the Store.
    // Uncomment the following line in the release version of your app.
    //   licenseInformation = CurrentApp.LicenseInformation;

    // Initialize the license info for testing.
    // Comment the following line in the release version of your app.
    licenseInformation = CurrentAppSimulator.LicenseInformation;

    // Other app initialization code...
}

2단계: 앱에 앱 내 제안 추가하기

앱 내 제품을 통해 사용할 수 있도록 하려는 각 기능에 대해 제품을 만들고 앱에 추가합니다.

중요

Store에 앱을 제출하기 전에 고객에게 제공하려는 앱 내 구매 제품을 앱에 모두 추가해야 합니다. 나중에 새 앱 내 제품을 추가하려면 앱을 업데이트하고 새 버전을 다시 제출해야 합니다.

  1. 앱 내 제안 토큰 만들기

    앱의 각 앱 내 제품을 토큰으로 식별합니다. 이 토큰은 앱 및 Store에서 특정 앱 내 제품을 식별하기 위해 정의하고 사용하는 문자열입니다. (앱에) 고유하고 의미 있는 이름을 지정하여 코딩하는 동안 나타나는 올바른 기능을 빠르게 식별할 수 있도록 합니다. 다음은 이름의 몇 가지 예입니다.

    • "SpaceMissionLevel4"
    • "ContosoCloudSave"
    • "RainbowThemePack"

참고 항목

코드에 사용하는 앱 내 제품 토큰은 파트너 센터에서 앱에 해당 추가 기능을 정의할 때 지정하는 제품 ID 값과 일치해야 합니다.

  1. 조건부 블록에 기능 코딩하기

    앱 내 제품과 연결된 각 기능에 대한 코드를 조건부 블록에 넣어 테스트하여 고객에게 해당 기능을 사용할 수 있는 라이선스가 있는지 확인해야 합니다.

    다음은 라이선스별 조건부 블록에서 featureName이라는 제품 기능을 코딩하는 방법을 보여 주는 예제입니다. featureName 문자열은 앱에서 이 제품을 고유하게 식별하고 Store에서 앱을 식별하는 데도 사용되는 토큰입니다.

    if (licenseInformation.ProductLicenses["featureName"].IsActive)
    {
        // the customer can access this feature
    }
    else
    {
        // the customer can' t access this feature
    }
    
  2. 이 기능의 구매 UI 추가하기

    또한 앱은 고객이 앱에서 제공하는 제품 또는 기능을 구매할 수 있는 방법을 제공해야 합니다. 고객은 전체 앱을 구매한 것과 동일한 방식으로 Store를 통해 구매할 수 없습니다.

    고객이 이미 앱에서 앱 내 제품을 소유하고 있는지 테스트하는 방법을 여기에서 확인할 수 있습니다. 소유하고 있지 않은 경우, 구매 대화 상자를 표시하여 구매할 수 있도록 합니다. "show the purchase dialog" 주석을 구매 대화 상자(예: 친숙한 "앱 구매!" 버튼이 있는 페이지)의 사용자 지정 코드로 교체합니다.

    async void BuyFeature()
    {
        if (!licenseInformation.ProductLicenses["featureName"].IsActive)
        {
            try
            {
                // The customer doesn't own this feature, so
                // show the purchase dialog.
                await CurrentAppSimulator.RequestProductPurchaseAsync("featureName", false);
    
                //Check the license state to determine if the in-app purchase was successful.
            }
            catch (Exception)
            {
                // The in-app purchase was not completed because
                // an error occurred.
            }
        }
        else
        {
            // The customer already owns this feature.
        }
    }
    

3단계: 테스트 코드를 최종 호출로 변경하기

간단한 단계입니다. 앱 코드에서 CurrentAppSimulator에 대한 모든 참조를 CurrentApp으로 변경합니다. WindowsStoreProxy.xml 파일을 제공할 필요가 더 이상 없으므로 앱의 경로에서 파일을 제거합니다(다음 단계에서 앱 내 제안을 구성할 때 참조용으로 저장할 수도 있음).

4단계: Store에서 앱 내 제품 제안 구성하기

파트너 센터에서 앱으로 이동하여 앱 내 제품 제안과 일치하는 추가 기능을 생성합니다. 추가 기능에 제품 ID 종류, 가격 및 기타 속성을 정의합니다. 테스트할 때 WindowsStoreProxy.xml에 설정한 구성과 동일하게 구성해야 합니다.

참고 항목

코드에 사용하는 앱 내 제안 토큰은 파트너 센터의 해당되는 추가 기능에 지정한 제품 ID 값과 일치해야 합니다.

설명

고객에게 소모성 앱 내 제품 옵션(원하는 경우 구매, 사용 및 다시 구매할 수 있는 항목)을 제공하려는 경우에는 소모성 앱 내 제품 구매 사용하기 항목으로 이동합니다.

사용자가 앱 내 구매를 했는지 여부를 영수증을 사용하여 확인해야 하는 경우에는 영수증 사용을 검토하여 제품 구매를 확인해야 합니다.