Опубликован: 02.08.2013 | Уровень: для всех | Доступ: платный
Самостоятельная работа 23:

Заработок на приложениях

В коде страницы MainPage.xaml.cs, Листинг 61.1, мы подключаем пространства имён Microsoft.Phone.Marketplace, Microsoft.Phone.Tasks и Microsoft.Advertising.Mobile.UI для доступа к функции IsTrial(), для открытия страницы Marketplace, соответствующей приложению и для работы с элементом управления для вывода рекламы. Мы объявляем переменные для хранения полученного состояния лицензии на приложение, для получения сведений о лицензии и для работы с Marketplace.

using System;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Marketplace;
using Microsoft.Phone.Tasks;
using Microsoft.Advertising.Mobile.UI;

namespace P23_1
{
    public partial class MainPage : PhoneApplicationPage
    {
        //Для хранения результатов запроса о пробном режиме
        bool isInTrialMode;
        LicenseInformation licInf = new LicenseInformation();
        //Для того чтобы открыть Marketplace со страницей информации о программе
        MarketplaceDetailTask mpDetail = new MarketplaceDetailTask();

        // Конструктор
        public MainPage()
        {
            InitializeComponent();
            //Узнаем, запущено ли приложение с пробной лицензией
            //В эмуляторе это будет всегда False
            isInTrialMode = licInf.IsTrial();
            //Для отладочных целей можем переключить isInTrialMode в значение true
            if (MessageBox.Show("Переключить в отладочных целях на пробный режим?",
 "Отладка", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            {
                isInTrialMode = true;
            }

            //Если в пробном режиме - покажем рекламу
            if (isInTrialMode)
            {

                AdControl adControl = new AdControl("test_client",   // ApplicationID
                                                    "Image480_80",   // AdUnitID
                                                    true);           // isAutoRefreshEnabled
                adControl.Width = 480;
                adControl.Height = 80;
                Grid grid = (Grid)this.LayoutRoot.Children[1];
                grid.Children.Add(adControl);

            }
        }

        private void btnClick_Click(object sender, RoutedEventArgs e)
        {

            //Если в пробном режиме
            if (isInTrialMode)
            {
                //Используем упрощенную функциональность
                CounterChange(1);
                //Если достигли условия ужесточения пробного режима, будем, 
при попытке воспользоваться приложением
                //показывать сообщение, но приложение продолжит работать
                if (Convert.ToInt32(textBlock1.Text) >= 3)
                {
                    //Сообщаем, что пробный период окончен
                    MessageBox.Show("Для того, чтобы продолжить работу, 
вам нужно приобрести полную версию программы. 
Теперь возможности приложения ограничены");
                    //Показываем страницу Marketplace. При отладке здесь должно появиться 
сообщение об ошибке  Market Place Error 805a0194
                    mpDetail.Show();
                }

            }
            //Если в обычном режиме
            else
            {
                //позволяем пользоваться полными возможностями приложния
                CounterChange(10);
            }
        }
        //Реализация функционала программы
        void CounterChange(double step)
        {

            textBlock1.Text = Convert.ToString(Convert.ToInt32(textBlock1.Text) + step);
        }

    }
}
Листинг 61.1. Код файла MainPage.xaml.cs

В конструкторе мы получаем состояние лицензии. В отладчике оно всегда устанавливается в False. Для отладочных целей мы хотели бы иметь возможность проверить работу программы при различных состояниях IsTrial(). Для этого мы задаём пользователю вопрос о переключении в отладочных целях на пробный режим и, если ответ пользователя положителен, записываем в переменную isInTrialMode значение true. Подобный механизм в реальных приложениях разумно будет реализовать на уровне приложения, в файле App.xaml.cs, сделав переменную, похожую на нашу isInTrialMode доступной другим страницам.

В обработчике нажатия на кнопку мы проверяем, находится ли приложение в пробном режиме. Если не находится – вызываем процедуру CounterChange(10), то есть – наше приложение выполняется с полным функционалом (здесь "полный функционал" означает прибавление к числу, хранящемуся в текстовом поле, по 10 за одно нажатие кнопки, а "пробный функционал" - прибавление 1). А если находится – проверяем счётчик. Когда счётчик, в одном сеансе работы (так как мы не сохраняем эти данные, например, в локальной папке приложения) достигает значения 3, мы сообщаем пользователю о том, что он пользуется пробной версией программы и предлагаем её приобрести. Если в сеансе работы пользователь продолжит нажимать на кнопку, мы будем продолжать выполнять действие и показывать ему приглашение купить программу.

После показа окна сообщения, мы показываем пользователю страницу Marketplace с подробностями о нашей программе. При отладке нормальным является поведение программы, когда данная команда приведет к появлению сообщения об ошибке Market Place Error 805a0194,

Выводы

На приложениях для Windows Phone можно зарабатывать различными способами. Среди них – продажа платных приложений, показ в приложениях рекламных объявлений (обычно рекламу показывают либо в бесплатных приложениях, либо – в пробных версиях приложений), продажа цифровых товаров в приложениях. Используя сервисы Магазина Windows Phone можно создавать пробные версии платных приложений. Использование пробной версии повышает шансы приложения на успех, поэтому этой возможностью не следует пренебрегать.

Задание

Проанализируйте разрабатываемое приложение на предмет возможной модели заработка с его помощью. Если приложение планируется сделать платным – подумайте над тем, как ограничить функционал пробной версии, и, в то же время, дать пользователю возможность в полной мере испытать приложение. Изложите результаты анализа в отчёте.

Дополнительные материалы

К данной лекции подготовлено видеоприложение и демонстрационный программный проект.

Вася Пупкин
Вася Пупкин
Россия, с. Оймякон
антон Антонкин
антон Антонкин
Россия