none
Продажа продуктов (надстроек) в приложении RRS feed

  • Вопрос

  • Прошу помочь имеющих опыт в разработке приложений для магазина Windows c поддержкой  продажи продуктов (надстроек).

    Вот код-схема  которая ,как я понимаю, нужна при создании надстройки.

    Вопросы

    1. Верна и достаточна она?

    2. Имя "Level2" в проверке лицензии и RequestProductPurchaseAsync("Level2",false)  является именем надстройки (идентификатором продукта) который прописывается при создании настройки с помощью информационной панели?

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    using Windows.ApplicationModel;
    using Windows.ApplicationModel.Store;
    using Windows.Storage;
    
    namespace App12
    {   
        public sealed partial class MainPage : Page
        {
            ApplicationDataContainer cont_licenses = ApplicationData.Current.LocalSettings;
           
            public MainPage()
            {
                this.InitializeComponent();
                ///////////////////
                //БЕСПЛАТНЫЙ КОНТЕНТ
                ////////////////////
                if (cont_licenses.Values["dostup"] == null)
                {
                    cont_licenses.Values["dostup"] = false;// cont_licenses.Values["dostup"] запоминает куплен продукт или нет
                }
                if ((bool)cont_licenses.Values["dostup"] == true)
                {
                    // ПЛАТНЫЙ КОНТЕНТ
                }
            }
    /// Кнопка с предложением купить надстройку (продукт)
       private void Button_Click(object sender, RoutedEventArgs e)
            {
      BuyFeature();
            }
    
            async void BuyFeature()
            {
                if (! CurrentApp.LicenseInformation.ProductLicenses["Level2"].IsActive)
                {
                    try
                    {
                        await CurrentApp.RequestProductPurchaseAsync("Level2", false);                   
                        // проверка лицензии
                        if ( CurrentApp.LicenseInformation.ProductLicenses["Level2"].IsActive)
                        {
                            cont_licenses.Values["dostup"] = true;
                         //переход на платный контент  
                        }
                        else
                        {
                            //пользователь не может пользоваться платным контентом
                        }
                    }
                    catch (Exception)
                    {
                       // ошибка в приобретении
                    }
                }
                else
                {
                    // Пользователь уже имеет этот продукт.
                }
            }
        }            
    }
    

     Пытался проверять с помощью симулятора. Но с CurrentAppSimulator cовсем у меня не получается.

     


    Фоновое изображение

Все ответы

  • Вот тут можно найти пример на любой случай...

    Про тестирование надстроек через CurrentAppSimulator, согласна сложновато. Пользуюсь в основном типом "Расходуемый (управление разработчиком)". Для тестирования делаю распродажу по цене бесплатно))) Сроки сами подберете, чтоб клиентам халяву случайно не подогнать...


    P.S. Тут теорию можно почитать)))
  • Благодарю за ссылку на ресурс с примерами . Нашел пример использования CurrentAppSimulator на С++. Но , к сожалению, он сложен и не имеет комментариев. Сам я пытался разобраться с помощью официального примера для магазина. Там есть комментарии и описание в документации.

    Мне больше подходит тип "Длительный". Бессрочная разблокировка частей платного контента.

    Ну что ж. Попробую проверить свою схему из первого поста, непосредственно, отправкой в Магазин.


    Фоновое изображение

  • На сколько я помню, когда разбиралась с CurrentAppSimulator, то от CurrentApp он отличается тем что в боевой версии нужно будет искать и убирать по тексту "Simulator", плюс все операции покупок хранятся в файле WindowsStoreProxy.xml, который не сложно править в простом тестовом редакторе.

    >>Ну что ж. Попробую проверить свою схему из первого поста, непосредственно, отправкой в Магазин.

    Для использования надстроек не обязательно публиковать приложение. Надстройки публикуются отдельно в панели разработчика. Только что бы не смущать раньше времени пользователей следите за параметрами их видимости.

  • Я не мог открыть WindowsStoreProxy.xml в VS чтобы редактировать. А по идее его можно отредактировать открыв в блокноте. Спасибо .

    "Для использования надстроек не обязательно публиковать приложение. Надстройки публикуются отдельно в панели разработчика. "

    Это справедливо если в уже опубликованном приложении есть функционал для поддержки новых надстроек и если это Windows 10 . Иначе пакеты нужно отправлять заново (прочел в документации).

    В моем опубликованном приложении нет этого функционала. Как я его вижу, описал в первом посте. Но сомневаюсь что все учел.  Например достаточно ли метода await CurrentApp.RequestProductPurchaseAsync("Level2", false); . который пользователю открывает диалоговое окно Магазина и после этого, по идее, должно поменяться на true значение CurrentApp.LicenseInformation.ProductLicenses["Level2"].IsActive). Либо после этого нужно подписаться на событие изменения лицензии и создать обработчик. 


    Фоновое изображение

  • Ну при продаже надстройки магазин открывается как модальное окно, пока покупка не будет завершена, доступ к приложению не вернется... Ну или пользователь не откажется от покупки(((