Цель работы: Научиться создавать пробные версии приложений, добавлять в приложения рекламные блоки, анализировать производительность приложений
Windows Phone Markerplace – это единая среда для распространения мобильных приложений среди пользователей. Разработчик может размещать как платные приложения, так и бесплатные. В случае с платными приложениями способ заработка на них очевиден.
В случае же с бесплатными, заработок может выражаться в различных формах. В частности, одним из популярных способов заработка на WM-приложениях (и играх, естественно), является размещение в таких приложениях рекламных блоков с помощью соответствующих программных механизмов и сервиса Microsoft
Обычная практика для приложений, размещаемых в
Пробные версии программы могут иметь различные ограничения. То, как именно будет ограничена пробная версия программы, всецело зависит от разработчика. Если говорить об играх, то здесь обычная практика – ограничение пробных версий несколькими игровыми уровнями, ограничение по времени игры, ограничения по дополнительным возможностям (таким, как возможность сохранения), ограничения по каким-либо игровым достижениям.
Рассмотрим механизм создания пробной версии программы.
Пространство имен Windows.Phone.LicenseInformation, который позволяет приложению определить, является ли его
У класса LicenseInformation есть метод IsTrial, который возвращает True, если мы имеем дело с пробной версией программы, и False в противном случае. В реальном приложении, загруженном из , он будет возвращать True, когда загружена пробная версия приложения, и False – когда пользователь приобрел полную версию программы.
Пробная и полная версии программы, в сущности, различаются лишь поведением программы, определяемым значением, которое возвращает метод IsTrial. Если он возвращает True – применяются ограничения, которые выбрал разработчик для своей программы. Если False – ограничения не применяются. Не рекомендуется вызывать IsTrial() в программе слишком часто (скажем, в игровом цикле). Достаточно вызывать функцию один раз, и, например, сохранить возвращённое значение в переменной, на состояние которой можно ориентироваться в программе.
Когда, следуя логике применения ограничений пробной версии, эти ограничения сработают можно напомнить пользователю о том, что он работает с пробной версией и предложить приобрести полную версию программы или выполнить какие-либо другие действия.
Рассмотрим использование данной функциональности на примере. Создадим новый TextBox. Один из них будем использовать в качестве счётчика количества нажатий кнопки. Когда кнопка будет нажата более 3-х раз, будем считать, что пробный режим закончился (в том случае, если программа сейчас в пробном режиме) и предлагать пользователю купить программу. На рис. 36.1 вы можете видеть экран программы.
(рис 36.1) Экран программы
В листинге 36.1 приведен
<phone:PhoneApplicationPage
x:Class="P29_1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot представляет корневую сетку, где размещается все содержимое страницы-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel содержит имя приложения и заголовок страницы-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="МОЕ ПРИЛОЖЕНИЕ"
Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="trial mode" Margin="9,-7,0,0"
Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel — поместите здесь дополнительное содержимое-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="Нажми меня!" Height="71" HorizontalAlignment="Left" Margin="92,451,0,0"
Name="button1" VerticalAlignment="Top" Width="261" Click="button1_Click" />
<TextBlock Height="46" HorizontalAlignment="Left" Margin="106,399,0,0" Name="textBlock1"
Text=" 0" VerticalAlignment="Top" Width="60" />
<TextBlock Height="46" HorizontalAlignment="Left" Margin="106,359,0,0" Name="textBlock2"
Text="Количество нажатий:" VerticalAlignment="Top" Width="195" />
</Grid>
</Grid>
</phone:PhoneApplicationPage>
В листинге 29.2 приведен программный код страницы.
using System;
using System.Windows;
using Microsoft.Phone.Controls;
//Для IsTrial
using Microsoft.Phone.Marketplace;
//Для показа страницы в Marketplace
using Microsoft.Phone.Tasks;
namespace P29_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;
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
//Если в пробном режиме
if (isInTrialMode)
{
//Если достигли условия прекращения пробного режима
if (Convert.ToInt32(textBlock1.Text) == 3)
{
//Сообщаем, что пробный период окончен
MessageBox.Show("Вы достигли 3-го уровня, для того, чтобы продолжить играть,
вам нужно приобрести полную версию программы");
//Показываем страницу Marketplace. При отладке здесь должно появиться сообщение об ошибке
Market Place Error 805a0194
mpDetail.Show();
}
//Если не достигли
else
{
CounterChange();
}
}
//Если в обычном режиме
else
{
CounterChange();
}
}
//Реализация игрового процесса
void CounterChange()
{
//Увеличим на 1 счётчик
textBlock1.Text = Convert.ToString(Convert.ToInt32(textBlock1.Text) + 1);
}
}
}
Здесь мы, во-первых, подключаем пространства имён Microsoft.Phone.
И Microsoft.Phone.Tasks для доступа к функции IsTrial() и для открытия страницы
В конструкторе мы получаем состояние IsTrial(). Для этого мы задаём пользователю вопрос о переключении в отладочных целях на пробный режим и, если ответ пользователя положителен, записываем в переменную isInTrialMode значение true. Подобный механизм в реальных приложениях разумно будет реализовать на уровне приложения, в файле App.isInTrialMode доступной другим страницам.
В обработчике нажатия на кнопку мы проверяем, находится ли приложение в пробном режиме. Если не находится – просто вызываем процедуру CounterChange(), то есть – попадаем в обычный игровой процесс. А если находится – проверяем счётчик. Когда счётчик достигает значения 3, мы сообщаем пользователю о том, что он пользуется пробной версией программы и предлагаем её приобрести.
После показа окна сообщения, мы показываем пользователю страницу
(рис 36.2) Ошибка Marketplace – правильная реакция системы при отладке
В настоящий момент (начало 2012 года) сервис Microsoft
Для использования рекламы в приложениях существует специальный элемент управления – AdControl, рис. 36.3.
(рис 36.3) Элемент управления AdControl
Если у вас нет данного элемента управления, возможно, у вас не установлен Microsft
Элемент управления имеет несколько ключевых свойств, а именно, это AdUnitID, которое по умолчанию содержит значение Image480x80, и ApplicationId, которое содержит test_client. Эти тестовые значения можно использовать при отладке приложения, однако, чтобы показывать в своём приложении реальные рекламные объявления, нужно зарегистрироваться в сервисе (http://advertising.microsoft.com/mobile-apps).
Вдоль правой части экрана в разрабаываемых
(рис 36.4) Показатели производительности Silverlight-приложения
Ниже, в порядке представления слева направо, перечислены показатели и их описание
Здесь приведены данные со снимка экрана эмулятора. Анализировать эти показатели имеет смысл на устройстве, используемом для
Рекомендации по производительности приложений можно почитать здесь: http://msdn.microsoft.com/en-us/library/ff967560%28v=vs.92%29.aspx
Для анализа производительности приложений (как на XNA, так и на
Подробнее об анализе производительности можно узнать здесь: http://msdn.microsoft.com/en-us/library/hh202934%28v=vs.92%29.aspx.
По состоянию на начало 2012 года российский разработчик может заработать на продаже приложений через , в список стран, с которыми работает Microsoft
Выясните, поддерживает ли на текущий момент сервис Microsoft
К данной лабораторной работе прилагается видеоурок
и демонстрационный проект.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.