Bagikan melalui


Mengecualikan atau membatasi fitur dalam versi uji coba

Jika Anda memungkinkan pelanggan menggunakan aplikasi secara gratis selama periode uji coba, Anda dapat menarik pelanggan untuk meningkatkan ke versi lengkap aplikasi Anda dengan mengecualikan atau membatasi beberapa fitur selama periode uji coba. Tentukan fitur mana yang harus dibatasi sebelum Anda mulai mengkoding, lalu pastikan aplikasi Anda hanya mengizinkannya berfungsi saat lisensi penuh telah dibeli. Anda juga dapat mengaktifkan fitur, seperti banner atau marka air, yang hanya ditampilkan selama uji coba, sebelum pelanggan membeli aplikasi Anda.

Penting

Artikel ini menunjukkan cara menggunakan anggota namespace Windows.ApplicationModel.Store untuk menerapkan fungsionalitas uji coba. Namespace layanan ini tidak lagi diperbarui dengan fitur baru, dan kami sarankan Anda menggunakan namespace Windows.Services.Store sebagai gantinya. Namespace Windows.Services.Store mendukung jenis add-on terbaru, seperti add-on dan langganan yang dapat dikonsumsi yang dikelola Store, dan dirancang agar kompatibel dengan jenis produk dan fitur mendatang yang didukung oleh Pusat Mitra dan Toko. 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. Untuk informasi selengkapnya tentang menerapkan fungsionalitas uji coba menggunakan namespace Windows.Services.Store , lihat artikel ini.

Prasyarat

Aplikasi Windows untuk menambahkan fitur bagi pelanggan untuk dibeli.

Langkah 1: Pilih fitur yang ingin Anda aktifkan atau nonaktifkan selama periode uji coba

Status lisensi aplikasi Anda saat ini disimpan sebagai properti kelas LicenseInformation . Biasanya, Anda menempatkan fungsi yang bergantung pada status lisensi dalam blok kondisional, seperti yang kami jelaskan di langkah berikutnya. Saat mempertimbangkan fitur-fitur ini, pastikan Anda dapat menerapkannya dengan cara yang akan berfungsi di semua status lisensi.

Selain itu, putuskan bagaimana Anda ingin menangani perubahan pada lisensi aplikasi saat aplikasi sedang berjalan. Aplikasi uji coba Anda dapat memiliki fitur lengkap, tetapi memiliki banner iklan dalam aplikasi di mana versi berbayar tidak. Atau, aplikasi uji coba Anda dapat menonaktifkan fitur tertentu, atau menampilkan pesan reguler yang meminta pengguna untuk membelinya.

Pikirkan tentang jenis aplikasi yang Anda buat dan apa strategi percobaan atau kedaluwarsa yang baik untuk itu. Untuk versi percobaan game, strategi yang baik adalah membatasi jumlah konten game yang dapat dimainkan pengguna. Untuk versi uji coba utilitas, Anda mungkin mempertimbangkan untuk mengatur tanggal kedaluwarsa, atau membatasi fitur yang dapat digunakan calon pembeli.

Untuk sebagian besar aplikasi non-game, mengatur tanggal kedaluwarsa berfungsi dengan baik, karena pengguna dapat mengembangkan pemahaman yang baik tentang aplikasi lengkap. Berikut adalah beberapa skenario kedaluwarsa umum dan opsi Anda untuk menanganinya.

  • Lisensi uji coba kedaluwarsa saat aplikasi sedang berjalan

    Jika uji coba kedaluwarsa saat aplikasi Anda berjalan, aplikasi Anda dapat:

    • Tidak melakukan apa pun.
    • Menampilkan pesan kepada pelanggan Anda.
    • Tutup.
    • Minta pelanggan Anda untuk membeli aplikasi.

    Praktik terbaik adalah menampilkan pesan dengan permintaan untuk membeli aplikasi, dan jika pelanggan membelinya, lanjutkan dengan semua fitur diaktifkan. Jika pengguna memutuskan untuk tidak membeli aplikasi, tutup atau ingatkan mereka untuk membeli aplikasi secara berkala.

  • Lisensi uji coba kedaluwarsa sebelum aplikasi diluncurkan

    Jika uji coba kedaluwarsa sebelum pengguna meluncurkan aplikasi, aplikasi Anda tidak akan diluncurkan. Sebagai gantinya, pengguna melihat kotak dialog yang memberi mereka opsi untuk membeli aplikasi Anda dari Toko.

  • Pelanggan membeli aplikasi saat sedang berjalan

    Jika pelanggan membeli aplikasi Anda saat sedang berjalan, berikut adalah beberapa tindakan yang dapat dilakukan aplikasi Anda.

    • Jangan lakukan apa pun dan biarkan mereka berlanjut dalam mode uji coba hingga memulai ulang aplikasi.
    • Terima kasih kepada mereka untuk membeli atau menampilkan pesan.
    • Aktifkan fitur yang tersedia secara diam-diam dengan lisensi penuh (atau nonaktifkan pemberitahuan uji coba saja).

Jika Anda ingin mendeteksi perubahan lisensi dan mengambil beberapa tindakan di aplikasi, Anda harus menambahkan penanganan aktivitas untuk ini seperti yang dijelaskan di langkah berikutnya.

Langkah 2: Menginisialisasi info lisensi

Saat aplikasi Anda menginisialisasi, dapatkan objek LicenseInformation untuk aplikasi Anda seperti yang ditunjukkan dalam contoh ini. Kami berasumsi bahwa licenseInformation adalah variabel global atau bidang jenis LicenseInformation.

Untuk saat ini, Anda akan mendapatkan informasi lisensi yang disimulasikan dengan menggunakan CurrentAppSimulator alih-alih CurrentApp. Sebelum mengirimkan versi rilis aplikasi ke Store, Anda harus mengganti semua referensi CurrentAppSimulator dalam kode Anda dengan CurrentApp.

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

Selanjutnya, tambahkan penanganan aktivitas untuk menerima pemberitahuan saat lisensi berubah saat aplikasi sedang berjalan. Lisensi aplikasi dapat berubah jika periode uji coba kedaluwarsa atau pelanggan membeli aplikasi melalui Toko, misalnya.

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;

    // Register for the license state change event.
    licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;

    // Other app initialization code...
}

void LicenseInformation_LicenseChanged()
{
    // This method is defined later.
    ReloadLicense(); 
}

Langkah 3: Kode fitur dalam blok bersyarah

Saat peristiwa perubahan lisensi dinaikkan, aplikasi Anda harus memanggil API Lisensi untuk menentukan apakah status uji coba telah berubah. Kode dalam langkah ini menunjukkan cara menyusun handler Anda untuk peristiwa ini. Pada titik ini, jika pengguna membeli aplikasi, adalah praktik yang baik untuk memberikan umpan balik kepada pengguna bahwa status lisensi telah berubah. Anda mungkin perlu meminta pengguna untuk menghidupkan ulang aplikasi jika itulah cara Anda mengkodekannya. Tetapi buat transisi ini semulus dan tanpa rasa sakit mungkin.

Contoh ini menunjukkan cara mengevaluasi status lisensi aplikasi sehingga Anda dapat mengaktifkan atau menonaktifkan fitur aplikasi Yang sesuai.

void ReloadLicense()
{
    if (licenseInformation.IsActive)
    {
        if (licenseInformation.IsTrial)
        {
            // Show the features that are available during trial only.
        }
        else
        {
            // Show the features that are available only with a full license.
        }
    }
    else
    {
        // A license is inactive only when there' s an error.
    }
}

Langkah 4: Dapatkan tanggal kedaluwarsa uji coba aplikasi

Sertakan kode untuk menentukan tanggal kedaluwarsa uji coba aplikasi.

Kode dalam contoh ini mendefinisikan fungsi untuk mendapatkan tanggal kedaluwarsa lisensi uji coba aplikasi. Jika lisensi masih valid, tampilkan tanggal kedaluwarsa dengan jumlah hari tersisa hingga uji coba kedaluwarsa.

void DisplayTrialVersionExpirationTime()
{
    if (licenseInformation.IsActive)
    {
        if (licenseInformation.IsTrial)
        {
            var longDateFormat = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longdate");

            // Display the expiration date using the DateTimeFormatter.
            // For example, longDateFormat.Format(licenseInformation.ExpirationDate)

            var daysRemaining = (licenseInformation.ExpirationDate - DateTime.Now).Days;

            // Let the user know the number of days remaining before the feature expires
        }
        else
        {
            // ...
        }
    }
    else
    {
        // ...
    }
}

Langkah 5: Uji fitur menggunakan panggilan yang disimulasikan ke API Lisensi

Sekarang, uji aplikasi Anda menggunakan data yang disimulasikan. CurrentAppSimulator mendapatkan info lisensi khusus pengujian dari file XML yang disebut WindowsStoreProxy.xml, yang terletak di %UserProfile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. Anda dapat mengedit WindowsStoreProxy.xml untuk mengubah tanggal kedaluwarsa yang disimulasikan untuk aplikasi Anda dan fiturnya. Uji semua kemungkinan konfigurasi kedaluwarsa dan lisensi Anda untuk memastikan semuanya berfungsi seperti yang dimaksudkan. Untuk informasi selengkapnya, lihat Menggunakan file WindowsStoreProxy.xml dengan CurrentAppSimulator.

Jika jalur dan file ini tidak ada, Anda harus membuatnya, baik selama penginstalan atau pada run-time. Jika Anda mencoba mengakses properti CurrentAppSimulator.LicenseInformation tanpa WindowsStoreProxy.xml ada di lokasi tertentu, Anda akan mendapatkan kesalahan.

Langkah 6: Ganti metode API Lisensi yang disimulasikan dengan API aktual

Setelah Menguji aplikasi dengan server lisensi yang disimulasikan, dan sebelum mengirimkan aplikasi ke Store untuk sertifikasi, ganti CurrentAppSimulator dengan CurrentApp, seperti yang ditunjukkan pada sampel kode berikutnya.

Penting

Aplikasi Anda harus menggunakan objek CurrentApp saat Anda mengirimkan aplikasi ke Toko atau akan gagal sertifikasi.

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;

    // Register for the license state change event.
    licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;

    // Other app initialization code...
}

Langkah 7: Jelaskan cara kerja uji coba gratis kepada pelanggan Anda

Pastikan untuk menjelaskan bagaimana aplikasi Anda akan berkinerja selama dan setelah periode uji coba gratis sehingga pelanggan Anda tidak akan terkejut dengan perilaku aplikasi Anda.

Untuk informasi selengkapnya tentang menjelaskan aplikasi Anda, lihat Membuat deskripsi aplikasi.