앱 및 추가 기능에 대한 라이선스 정보 가져오기

이 문서는 Windows.Services.Store 네임스페이스의 StoreContext 클래스의 메서드를 사용하여 현재 앱과 추가 기능에 대한 라이선스 정보를 가져오는 방법을 보여줍니다. 예를 들어 이 정보를 사용하여 앱 또는 추가 기능에 대한 라이선스가 활성 상태인지 또는 평가판 라이선스인지 확인할 수 있습니다.

참고

Windows.Services.Store 네임스페이스는 Windows 10 버전 1607에 도입되었으며 Windows 10 Anniversary Edition(10.0, 빌드 14393) 또는 Visual Studio의 최신 릴리스를 대상으로 하는 프로젝트에만 사용할 수 있습니다. 앱이 이전 버전의 Windows 10을 대상으로 하는 경우에는 Windows.Services.Store 네임스페이스 대신 Windows.ApplicationModel.Store 네임스페이스를 사용해야 합니다. 자세한 정보는 이 문서를 참조하세요.

필수 조건

이 예시에는 다음과 같은 필수 조건이 있습니다.

  • Windows 10 Anniversary Edition(10.0, 빌드 14393) 이상 릴리스를 대상으로 하는 UWP(유니버설 Windows 플랫폼) 앱에 대한 Visual Studio 프로젝트입니다.
  • 파트너 센터에서 앱 제출을 생성하였으며 이 앱은 스토어에 게시되었습니다. 테스트하는 동안 Store에서 검색이 되지 않도록 앱을 구성할 수도 있습니다. 자세한 정보는 테스트 지침을 참조하세요.
  • 앱의 추가 기능에 대한 라이선스 정보를 가져오려면 파트너 센터에서 추가 기능을 생성해야 합니다.

이 예시의 코드는 다음을 가정합니다.

  • 코드는 workingProgressRing(이)라고 이름이 지정된 ProgressRingtextBlock(이)라고 이름이 지정된 TextBlock을 포함하는 페이지의 컨텍스트에서 실행됩니다. 이러한 개체는 각각 비동기 작업의 발생을 나타내며 출력 메시지를 표시하는 데 사용됩니다.
  • 코드 파일에는 Windows.Services.Store 네임스페이스에 대한 using 문이 있습니다.
  • 이 앱은 단일 사용자 앱으로, 해당 앱을 실행한 사용자의 컨텍스트에서만 실행됩니다. 자세한 정보는 앱 내 구매 및 평가판을 참조하세요.

참고

데스크톱 브리지를 사용하는 데스크톱 애플리케이션이 있는 경우 이 예시에서 표시되지 않는 별도의 코드를 추가하여 StoreContext 개체를 구성해야 할 수도 있습니다. 자세한 정보는 데스크톱 브리지를 사용하는 데스크톱 애플리케이션에서 StoreContext 클래스 사용하기를 참조하세요.

코드 예시

현재 앱에 대한 라이선스 정보를 얻으려면 GetAppLicenseAsync 메서드를 사용합니다. 이는 앱에 대한 라이선스 정보를 제공하는 StoreAppLicense 개체를 반환하는 비동기 메서드로, 사용자에게 현재 앱을 사용할 수 있는 올바른 라이선스가 있는지(IsActive), 라이선스가 평가판 버전용인지(IsTrial) 여부를 나타내는 속성이 포함되어 있습니다.

사용할 자격이 있는 사용자가 현재 앱의 지속형 추가 기능에 대한 라이선스에 액세스하려면 StoreAppLicense 개체의 AddOnLicenses 속성을 사용합니다. 이 속성은 추가 기능 라이선스를 나타내는 StoreLicense 개체의 컬렉션을 반환합니다.

private StoreContext context = null;

public async void GetLicenseInfo()
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    workingProgressRing.IsActive = true;
    StoreAppLicense appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    if (appLicense == null)
    {
        textBlock.Text = "An error occurred while retrieving the license.";
        return;
    }

    // Use members of the appLicense object to access license info...

    // Access the valid licenses for durable add-ons for this app.
    foreach (KeyValuePair<string, StoreLicense> item in appLicense.AddOnLicenses)
    {
        StoreLicense addOnLicense = item.Value;
        // Use members of the addOnLicense object to access license info
        // for the add-on.
    }
}

전체 샘플 애플리케이션은 Store 샘플을 참조하세요.