Mendapatkan info produk untuk aplikasi dan add-on

Artikel ini menunjukkan cara menggunakan metode kelas StoreContext di namespace Windows.Services.Store untuk mengakses info terkait Store untuk aplikasi saat ini atau salah satu add-on-nya.

Untuk aplikasi sampel lengkap, lihat sampel Store.

Catatan

Namespace Windows.Services.Store diperkenalkan di Windows 10, versi 1607, dan hanya dapat digunakan dalam proyek yang menargetkan Windows 10 Anniversary Edition (10.0; Build 14393) atau rilis yang lebih baru di Visual Studio. Jika aplikasi Anda menargetkan versi Windows 10 yang lebih lama, Anda harus menggunakan namespace Windows.ApplicationModel.Store alih-alih namespace Windows.Services.Store. Untuk informasi selengkapnya, lihat artikel ini.

Prasyarat

Contoh-contoh ini memiliki prasyarat berikut:

  • Proyek Visual Studio untuk aplikasi Platform Windows Universal (UWP) yang menargetkan Windows 10 Anniversary Edition (10.0; Build 14393) atau rilis yang lebih baru.
  • Anda telah membuat pengiriman aplikasi di Pusat Mitra dan aplikasi ini diterbitkan di Toko. Anda dapat secara opsional mengonfigurasi aplikasi sehingga tidak dapat ditemukan di Store saat Anda mengujinya. Untuk informasi selengkapnya, lihat panduan pengujian kami.
  • Jika Anda ingin mendapatkan info produk untuk add-on untuk aplikasi, Anda juga harus membuat add-on di Pusat Mitra.

Kode dalam contoh ini mengasumsikan:

  • Kode berjalan dalam konteks Halaman yang berisi ProgressRing bernama workingProgressRing dan TextBlock bernama textBlock. Objek-objek ini digunakan untuk menunjukkan bahwa operasi asinkron terjadi dan untuk menampilkan pesan output, masing-masing.
  • File kode memiliki pernyataan penggunaan untuk namespace Windows.Services.Store .
  • Aplikasi ini adalah aplikasi pengguna tunggal yang hanya berjalan dalam konteks pengguna yang meluncurkan aplikasi. Untuk informasi selengkapnya, lihat Pembelian dan uji coba dalam aplikasi.

Catatan

Jika Anda memiliki aplikasi desktop yang menggunakan Desktop Bridge, Anda mungkin perlu menambahkan kode tambahan yang tidak ditampilkan dalam contoh ini untuk mengonfigurasi objek StoreContext . Untuk informasi selengkapnya, lihat Menggunakan kelas StoreContext di aplikasi desktop yang menggunakan Desktop Bridge.

Mendapatkan info untuk aplikasi saat ini

Untuk mendapatkan info produk Store tentang aplikasi saat ini, gunakan metode GetStoreProductForCurrentAppAsync . Ini adalah metode asinkron yang mengembalikan objek StoreProduct yang dapat Anda gunakan untuk mendapatkan info seperti harga.

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}";
}

Mendapatkan info untuk add-on dengan ID Store yang diketahui yang terkait dengan aplikasi saat ini

Untuk mendapatkan info produk Store untuk add-on yang terkait dengan aplikasi saat ini dan yang sudah Anda ketahui ID Tokonya, gunakan metode GetStoreProductsAsync . Ini adalah metode asinkron yang mengembalikan kumpulan objek StoreProduct yang mewakili masing-masing add-on. Selain ID Penyimpanan, Anda harus meneruskan daftar string ke metode ini yang mengidentifikasi jenis add-on. Untuk daftar nilai string yang didukung, lihat properti ProductKind .

Catatan

Metode GetStoreProductsAsync mengembalikan info produk untuk add-on tertentu yang terkait dengan aplikasi, terlepas dari apakah add-on saat ini tersedia untuk dibeli. Untuk mengambil info untuk semua add-on untuk aplikasi saat ini yang saat ini dapat dibeli, gunakan metode GetAssociatedStoreProductsAsync seperti yang dijelaskan di bagian berikut sebagai gantinya .

Contoh ini mengambil info untuk add-on yang tahan lama dengan ID Penyimpanan tertentu yang terkait dengan aplikasi saat ini.

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...
    }
}

Dapatkan info untuk add-on yang tersedia untuk dibeli dari aplikasi saat ini

Untuk mendapatkan info produk Store untuk add-on yang saat ini tersedia untuk dibeli dari aplikasi saat ini, gunakan metode GetAssociatedStoreProductsAsync . Ini adalah metode asinkron yang mengembalikan kumpulan objek StoreProduct yang mewakili setiap add-on yang tersedia. Anda harus meneruskan daftar string ke metode ini yang mengidentifikasi jenis add-on yang ingin Anda ambil. Untuk daftar nilai string yang didukung, lihat properti ProductKind .

Catatan

Jika aplikasi memiliki banyak add-on yang tersedia untuk dibeli, Anda dapat menggunakan metode GetAssociatedStoreProductsWithPagingAsync untuk menggunakan halaman untuk mengembalikan hasil add-on.

Contoh berikut mengambil info untuk semua add-on yang tahan lama, add-on yang dapat digunakan yang dikelola Store, dan add-on yang dapat digunakan yang dikelola pengembang yang tersedia untuk dibeli dari aplikasi saat ini.

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...
    }
}

Mendapatkan info untuk add-on untuk aplikasi saat ini yang telah dibeli pengguna

Untuk mendapatkan info produk Store untuk add-on yang telah dibeli pengguna saat ini, gunakan metode GetUserCollectionAsync . Ini adalah metode asinkron yang mengembalikan kumpulan objek StoreProduct yang mewakili masing-masing add-on. Anda harus meneruskan daftar string ke metode ini yang mengidentifikasi jenis add-on yang ingin Anda ambil. Untuk daftar nilai string yang didukung, lihat properti ProductKind .

Catatan

Jika aplikasi memiliki banyak add-on, Anda dapat menggunakan metode GetUserCollectionWithPagingAsync untuk menggunakan halaman untuk mengembalikan hasil add-on.

Contoh berikut mengambil info untuk add-on yang tahan lama dengan ID Penyimpanan yang ditentukan.

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...
    }
}