Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo demonstra como usar métodos da classe StoreContext no namespace Windows.Services.Store para acessar informações relacionadas à Store para o aplicativo atual ou um de seus complementos.
Para obter um aplicativo de exemplo completo, confira o Exemplo da Store.
Nota
O namespace Windows.Services.Store foi introduzido no Windows 10, versão 1607, e pode ser usado apenas em projetos que têm como alvo o Windows 10 Anniversary Edition (10.0; Build 14393) ou uma versão posterior no Visual Studio. Se o aplicativo for direcionado a uma versão anterior do Windows 10, você deverá usar o namespace Windows.ApplicationModel.Store em vez do namespace Windows.Services.Store. Para obter mais informações, consulte este artigo.
Pré-requisitos
Estes exemplos têm os seguintes pré-requisitos:
- Um projeto do Visual Studio para um aplicativo da Plataforma Universal do Windows (UWP) direcionado ao Windows 10 Anniversary Edition (10.0; Build 14393) ou uma versão posterior.
- Você criou um envio de aplicativo no Partner Center e este aplicativo é publicado na Loja. Opcionalmente, você pode configurar o aplicativo para que ele não seja detectável na Loja enquanto você o testa. Para obter mais informações, consulte nossas orientações para teste .
- Se você quiser obter informações do produto de um complemento de aplicativo, também precisará criar o complemento no Partner Center.
O código nestes exemplos pressupõe:
- O código é executado no contexto de uma página que contém um ProgressRing chamado
workingProgressRinge um TextBlock chamadotextBlock. Esses objetos são usados para indicar que uma operação assíncrona está ocorrendo e exibir mensagens de saída, respectivamente. - O arquivo de código tem uma instrução using para o namespace Windows.Services.Store.
- O aplicativo é um aplicativo de usuário único que é executado somente no contexto do usuário que iniciou o aplicativo. Para obter mais informações, confira Compras e avaliações no aplicativo.
Nota
Se você tiver um aplicativo de área de trabalho que usa a Ponte da Área de Trabalho , talvez seja necessário adicionar código extra não mostrado nestes exemplos para configurar o objeto StoreContext. Para obter mais informações, confira Como usar a classe StoreContext em um aplicativo da área de trabalho que usa a Ponte de Desktop.
Obter informações para o aplicativo atual
Para obter informações sobre o produto na Store para o aplicativo atual, use o método GetStoreProductForCurrentAppAsync. Este é um método assíncrono que retorna um objeto StoreProduct que você pode usar para obter informações como o preço.
private StoreContext context = null;
public async void GetAppInfo()
{
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.
}
// Get app store product details. Because this might take several moments,
// display a ProgressRing during the operation.
workingProgressRing.IsActive = true;
StoreProductResult queryResult = await context.GetStoreProductForCurrentAppAsync();
workingProgressRing.IsActive = false;
if (queryResult.Product == null)
{
// The Store catalog returned an unexpected result.
textBlock.Text = "Something went wrong, and the product was not returned.";
// Show additional error info if it is available.
if (queryResult.ExtendedError != null)
{
textBlock.Text += $"\nExtendedError: {queryResult.ExtendedError.Message}";
}
return;
}
// Display the price of the app.
textBlock.Text = $"The price of this app is: {queryResult.Product.Price.FormattedBasePrice}";
}
Obtenha informações sobre complementos com IDs conhecidas da Loja que estão associadas ao aplicativo atual
Para obter informações de produto da Store para complementos associados ao aplicativo atual e para os quais você já conhece as IDs da Store, use o método GetStoreProductsAsync. Esse é um método assíncrono que retorna uma coleção de objetos StoreProduct que representam cada um dos complementos. Além das IDs da Loja, você deve passar uma lista de cadeias de caracteres para esse método que identificam os tipos de complementos. Para obter uma lista dos valores de cadeia de caracteres com suporte, consulte a propriedade ProductKind.
Nota
O método GetStoreProductsAsync retorna informações do produto para os complementos especificados associados ao aplicativo, independentemente de os complementos estarem disponíveis para compra no momento. Para recuperar informações de todos os complementos do aplicativo atual que estão disponíveis para compra no momento, use o método GetAssociatedStoreProductsAsync, conforme detalhado na seção a seguir.
Este exemplo recupera informações para complementos duráveis com os IDs da Loja especificados, que estão associados ao aplicativo atual.
private StoreContext context = null;
public async void GetProductInfo()
{
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.
}
// Specify the kinds of add-ons to retrieve.
string[] productKinds = { "Durable" };
List<String> filterList = new List<string>(productKinds);
// Specify the Store IDs of the products to retrieve.
string[] storeIds = new string[] { "9NBLGGH4TNMP", "9NBLGGH4TNMN" };
workingProgressRing.IsActive = true;
StoreProductQueryResult queryResult =
await context.GetStoreProductsAsync(filterList, storeIds);
workingProgressRing.IsActive = false;
if (queryResult.ExtendedError != null)
{
// The user may be offline or there might be some other server failure.
textBlock.Text = $"ExtendedError: {queryResult.ExtendedError.Message}";
return;
}
foreach (KeyValuePair<string, StoreProduct> item in queryResult.Products)
{
// Access the Store info for the product.
StoreProduct product = item.Value;
// Use members of the product object to access info for the product...
}
}
Obtenha informações sobre extensões disponíveis para compra no aplicativo atual.
Para obter informações de produto da Store para os complementos que estão disponíveis para compra no aplicativo atual, use o método GetAssociatedStoreProductsAsync. Esse é um método assíncrono que retorna uma coleção de objetos StoreProduct que representam cada um dos complementos disponíveis. Você deve passar uma lista de cadeias de caracteres para esse método que identificam os tipos de complementos que você deseja recuperar. Para obter uma lista dos valores de cadeia de caracteres com suporte, consulte a propriedade ProductKind.
Nota
Se o aplicativo tiver muitos complementos disponíveis para compra, se preferir, você pode usar o método GetAssociatedStoreProductsWithPagingAsync para utilizar a paginação e retornar os resultados dos complementos.
O exemplo a seguir recupera informações para todos os complementos duráveis, complementos consumíveis gerenciados pela Store e complementos consumíveis gerenciados pelo desenvolvedor que estão disponíveis para compra do aplicativo atual.
private StoreContext context = null;
public async void GetAddOnInfo()
{
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.
}
// Specify the kinds of add-ons to retrieve.
string[] productKinds = { "Durable", "Consumable", "UnmanagedConsumable" };
List<String> filterList = new List<string>(productKinds);
workingProgressRing.IsActive = true;
StoreProductQueryResult queryResult = await context.GetAssociatedStoreProductsAsync(filterList);
workingProgressRing.IsActive = false;
if (queryResult.ExtendedError != null)
{
// The user may be offline or there might be some other server failure.
textBlock.Text = $"ExtendedError: {queryResult.ExtendedError.Message}";
return;
}
foreach (KeyValuePair<string, StoreProduct> item in queryResult.Products)
{
// Access the Store product info for the add-on.
StoreProduct product = item.Value;
// Use members of the product object to access listing info for the add-on...
}
}
Obter informações para complementos para o aplicativo atual que o usuário comprou
Para obter informações de produto da Store para complementos comprados pelo usuário atual, use o método GetUserCollectionAsync. Esse é um método assíncrono que retorna uma coleção de objetos StoreProduct que representam cada um dos complementos. Você deve passar uma lista de cadeias de caracteres para esse método que identificam os tipos de complementos que você deseja recuperar. Para obter uma lista dos valores de cadeia de caracteres com suporte, consulte a propriedade ProductKind.
Nota
Se o aplicativo tiver muitos complementos, você poderá usar o método GetUserCollectionWithPagingAsync para usar a paginação para retornar os resultados do complemento.
O exemplo a seguir recupera informações para complementos duráveis com as IDs especificadas da Loja .
private StoreContext context = null;
public async void GetUserCollection()
{
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.
}
// Specify the kinds of add-ons to retrieve.
string[] productKinds = { "Durable" };
List<String> filterList = new List<string>(productKinds);
workingProgressRing.IsActive = true;
StoreProductQueryResult queryResult = await context.GetUserCollectionAsync(filterList);
workingProgressRing.IsActive = false;
if (queryResult.ExtendedError != null)
{
// The user may be offline or there might be some other server failure.
textBlock.Text = $"ExtendedError: {queryResult.ExtendedError.Message}";
return;
}
foreach (KeyValuePair<string, StoreProduct> item in queryResult.Products)
{
StoreProduct product = item.Value;
// Use members of the product object to access info for the product...
}
}