앱이 무료인지 여부와 관계없이 앱 내에서 바로 콘텐츠, 다른 앱 또는 새로운 앱 기능(예: 게임의 다음 수준 잠금 해제)을 판매할 수 있습니다. 여기서는 앱에서 이러한 제품을 사용하도록 설정하는 방법을 보여 줍니다.
중요하다
이 문서에서는 Windows.ApplicationModel.Store 네임스페이스의 멤버를 사용하여 앱에서 바로 구매를 사용하도록 설정하는 방법을 보여 줍니다. 이 네임스페이스는 더 이상 새 기능으로 업데이트되지 않으며 대신 Windows.Services.Store 네임스페이스를 사용하는 것이 좋습니다. Windows.Services.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\<패키지 이름>\LocalState\Microsoft\Windows Store\ApiData에서 WindowsStoreProxy.xml 파일을 사용자 지정해야 합니다. Microsoft Visual Studio 시뮬레이터는 앱을 처음 실행할 때 이 파일을 만들거나 런타임에 사용자 지정 파일을 로드할 수도 있습니다. 자세한 내용은 CurrentAppSimulatorWindowsStoreProxy.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단계: 앱에 앱 내 제안 추가
앱 내 제품을 통해 사용할 수 있도록 하려는 각 기능에 대해 제품을 만들고 앱에 추가합니다.
중요하다
스토어에 제출하기 전에 고객에게 제공할 모든 앱 내 제품을 앱에 추가해야 합니다. 나중에 새 앱 내 제품을 추가하려면 앱을 업데이트하고 새 버전을 다시 제출해야 합니다.
앱 내 제품 토큰 만들기
앱의 각 앱 내 제품을 토큰으로 식별합니다. 이 토큰은 앱 및 스토어에서 특정 앱 내 제품을 식별하기 위해 정의하고 사용하는 문자열입니다. 코딩하는 동안 나타내는 올바른 기능을 빠르게 식별할 수 있도록 앱에 고유하고 의미 있는 이름을 지정합니다. 다음은 이름의 몇 가지 예입니다.
- 스페이스미션레벨4
- "ContosoCloudSave"
- RainbowThemePack
메모
코드에서 사용하는 앱 내 제품 토큰은 파트너 센터 앱에 대한 해당 추가 기능을 정의할 때 지정한 제품 ID 값과 일치해야.
기능을 조건부 블록에 코딩
앱에서 바로 제품과 연결된 각 기능에 대한 코드를 테스트하는 조건부 블록에 넣어 고객에게 해당 기능을 사용할 수 있는 라이선스가 있는지 확인해야 합니다.
다음은 라이선스별 조건부 블록에서 featureName라는 제품 기능을 코딩하는 방법을 보여 주는 예제입니다. featureName 문자열은 앱 내에서 이 제품을 고유하게 식별하는 토큰이며 스토어에서 식별하는 데도 사용됩니다.
if (licenseInformation.ProductLicenses["featureName"].IsActive) { // the customer can access this feature } else { // the customer can' t access this feature }
이 기능 대한 구매 UI 추가
또한 앱은 고객이 앱에서 제공하는 제품 또는 기능을 구매할 수 있는 방법을 제공해야 합니다. 전체 앱을 구매한 것과 동일한 방식으로 스토어를 통해 구매할 수 없습니다.
고객이 이미 앱 내 제품을 소유하고 있는지 확인하는 방법과, 그렇지 않은 경우에는 구매 대화 상자를 표시하여 제품을 구매할 수 있도록 하는 방법은 다음과 같습니다. 메모 "구매 대화 상자 표시"를 구매 대화 상자의 사용자 지정 코드(예: 친숙한 "이 앱 구입!" 단추가 있는 페이지)로 바꿉니다.
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단계: 스토어에서 앱 내 제품 구성
파트너 센터에서 앱으로 이동하여 앱 내 제품과 일치하는 추가 기능 만듭니다. 추가 기능에 대한 제품 ID, 유형, 가격 및 기타 속성을 정의합니다. 테스트할 때 WindowsStoreProxy.xml 설정한 구성과 동일하게 구성해야 합니다.
메모
코드에서 사용하는 앱 내 제품 토큰은 파트너 센터에서 해당 추가 기능에 대해 지정한 제품 ID 값과 일치해야 합니다.
발언
고객에게 소모성 앱 내 제품 옵션(원하는 경우 구매, 사용 및 다시 구매할 수 있는 항목)을 제공하려는 경우 소모성 앱 내 제품 구매 사용 설정 항목으로 이동합니다.
사용자가 앱 내 구매를 했는지 영수증을 사용하여 확인해야 하는 경우, 반드시 영수증을 사용하여 제품 구매를 확인하기를 검토하십시오.