Posted on 28. November 2018

Встраивание ввода данных в UWP приложения

Одной из наименее известных возможностей UWP приложений является встраивание ввода данных. Это будет особенно полезно, если Вы хотите предоставить пользователям ознакомительную инструкцию, мгновенную обратную связь с помощью дополнительных технологий или реализовать вкладку Help в приложении. Рассмотрим подробнее преимущества пространства имен Windows.UI.Input.Preview.Injection и его внедрение в приложения.

Поддерживаемые типы ввода

Windows 10 поддерживает несколько типов ввода. В настоящее время это:

  • Геймпад
  • Клавиатура
  • Мышка
  • Стилус
  • Сенсор

В этой статье будут приведены примеры ввода с помощью клавиатуры и мышки.

Возможность внедрения ввода

Прежде чем использовать внедрение ввода, необходимо указать эту возможность в манифесте приложения, так как это нестандартная функция. Это ограниченная возможность, поэтому Вы можете безопасно отправлять на сертификацию и публиковать Ваше приложение в Store.

Добавление этой возможности простое и понятное. Откройте Package.appxmanifest как XML-файл и добавьте следующее описание пространства имен в Package элемент:

 


 

 

Пространство имен rescap - это хранилище для ограниченных возможностей. Теперь Вы можете добавить функцию inputInjectionBrokered в разделе Capabilities:


  
       
       


Основы

Основным классом в Windows.UI.Input.Preview.Injection является InputInjector. Вы можете создать его образец, вызвав статический TryCreate метод. После чего Вы можете вызвать соответствующие методы для каждого типа ввода:

 

var inputInfo = new InjectedInputMouseInfo();
...
InputInjector inputInjector = InputInjector.TryCreate();
inputInjector.InjectMouseInput(new[] { inputInfo });

 

 

Методы принимают список данных ввода, поэтому Вы можете последовательно выполнять несколько операций ввода.

Ввод с мышки

Вы можете подготовить информацию ввода с помощью мышки, используя InjectedInputMouseInfo класс. Чтобы двигать мышкой, используйте DeltaX и DeltaY свойства:

 

var info = new InjectedInputMouseInfo();
info.MouseOptions = InjectedInputMouseOptions.Move;
info.DeltaY = 100; //move down 100 points

 

Свойство MouseOptions позволяет указывать места, которые влияют на выполнение действий. Среди них LeftDown и LeftUp, которые можно использовать для имитации простого щелчка мышки:

 

var down = new InjectedInputMouseInfo();
down.MouseOptions = InjectedInputMouseOptions.LeftDown;

var up = new InjectedInputMouseInfo();
up.MouseOptions = InjectedInputMouseOptions.LeftUp;

InputInjector inputInjector = InputInjector.TryCreate();
inputInjector.InjectMouseInput(new[] { down, up });

 

Вы также можете имитировать как вертикальный, так и горизонтальный скрол мышки, используя Wheel и HWheel. Вы можете указывать расстояние прокрутки, используя свойство MouseData:

 

var info = new InjectedInputMouseInfo();
info.MouseOptions = InjectedInputMouseOptions.Wheel;
info.MouseData = 500; //scroll up

InputInjector inputInjector = InputInjector.TryCreate();
inputInjector.InjectMouseInput(new[] { info });

 

Прокрутка - это легко. Но как насчет прокрутки вниз?

 

info.MouseData = -500; //compile time error!

 

Обратите внимание, что свойство MouseData - это uint единица, которой нельзя присвоить отрицательные значения.

 

unchecked
{
    info.MouseData = (uint)-500; //scroll down
}

 

В этом случае Вы должны использовать непроверенный блок, потому что значение считается постоянным, а компилятор жалуется, что это приведет к числовой перегрузке. Если использовать временную локальную переменную, можно избежать необходимости использовать непроверенный блок.

Ввод с мышкой также содержит свойство TimeOffsetInMilliseconds, которое можно установить для задержки отдельных действий. Это свойство рекомендуется для правильной имитации операций, таких как двойной щелчок.

Ввод с клавиатуры

Класс InjectedInputKeyboardInfo является базой для внедрения ввода с клавиатуры. Наиболее важное свойство - VirtualKey, которое указывает, к какому ключу относится ввод. Используя KeyOptions, Вы можете указывать дополнительные опции, такие как симуляция key up события.

Следующий образец показывает строку «привет» в активном поле ввода:

 

InputInjector inputInjector = InputInjector.TryCreate();
foreach (var letter in "hello")
{
    var info = new InjectedInputKeyboardInfo();
    info.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey),
                                 letter.ToString(), true));
    inputInjector.InjectKeyboardInput(new[] { info });
    await Task.Delay(100);
}

 

В конце foreach узла находится Task.Delay вызов. Это гарантирует, что повторные нажатия клавиш не регистрируются как одно нажатие.

Образец кода

Исходный образец кода доступен на GitHub.

Application Sample

В заключении

В этой статье мы подробно изучили пространство имен Windows.UI.Input.Preview.Injection и посмотрели, как его можно использовать для имитации ввода с разных типов устройств. Не смотря на то, что эта опция не так часто используется, она все же полезна в UWP API.

Дополнительная нформации



Posted on 6. October 2018

6 лучших способов увеличить оценки, отзывы и фидбеки для Вашего приложения

Один из часто задаваемых вопросов: «Как привлечь клиентов и увеличить количество оценок и отзывов в приложении?»

Отзывы пользователей важны не только для разработки продукта, они также существенно влияют на приобретение Вашего продукта. Итак, что можно сделать, кроме проверки отзывов, чтобы повысить оценку и получать больше отзывов и фидбеков?

6 советов, которые Вам помогут:

Просите отзывы

Будьте настойчивыми! Спрашивайте пользователей об их мнение и опыте использования. 

1) Спрашивайте в приложении

Добавьте в Ваше приложение окно оценки и голосования или же напрямую запускайте страницу оценок и отзывов в Microsoft Store. Вы также можете использовать Feedback Hub для отзывов Ваших пользователей.

2) Спрашивайте с помощью push-уведомлений

 

Отправляйте toast- или push-уведомления с просьбой оставить оценку и отзыв. Чтобы привлекать только тех пользователей, которые еще не оценили Ваше приложение, сначала создайте сегмент с определением «Has rated == false», а затем настройте push-уведомления.


 

3) Спрашивайте в Microsoft Store

Добавьте просьбу оставить оценку и отзыв в разделе «Что нового в этой версии» или в описании Вашего продукта в Microsoft Store. После того, как Вы расскажете об обновлениях, сообщите пользователям, что Вы ждете их отзывов. К примеру: «Пожалуйста, помогите улучшить приложение, оставьте Вашу оценку и отзыв».

Отвечайте пользователям

Ответы на отзывы дают понять, что Вы заботитесь о пользователях и продолжаете улучшать Ваше приложение.

4) Отвечайте на отзывы в Store 

Пользователи должны знать, что их мнение важно. Вы можете отвечать на их отзывы через API или с панели инструментов. Подробнее об этом здесь

5) Отвечайте прямо на отзыв

Хотите отправлять конкретные комментарии? Используйте Feedback Hub в Вашем приложении. Вы можете отвечать публично или приватно и уведомлять о состоянии любой жалобы пользователя, над которой Вы работаете.

Ваши ответы должны быть краткие (не больше 1000 символов), вежливые и точные. Подробнее об ответах на отзывы читайте здесь.

Отвечая на отзывы и письма, делайте Ваши ответы вежливыми и уважительными, потому что пользователи имеют право подать жалобу в Microsoft Store на некоректный и оскорбительный ответ.

6) Работайте над улучшениями

Если несколько пользователей предлагают добавить или исправить одну и ту же функцию, рассмотрите эту просьбу для выпуска в новой версии, и когда Вы это сделаете, объявите об этом в описании приложения или в разделе «Что нового в этой версии», чтобы пользователи знали, какие проблемы были устранены. Вы также можете сказать, что проблемы были выявлены на основе отзывов, и попросить пользователей поделиться их мнением.

Эти советы помогут Вам сообщить пользователям о важности их мнения!



Posted on 26. April 2018

Windows Template Studio 2.0

Windows Template Studio обновлен к новой версии 2.0. Команда Microsoft с нетерпением ждет, когда Вы начнете создавать замечательные приложения, используя новую версию. Template Studio - это проект с открытым исходным кодом, главная цель которого - ускорить создание приложений с использованием передовых методов и надежной исходной базой кода.

Microsoft благодарны всем за участие в проекте, основанном на сообществах, огромным вкладам / партнерским отношениям, которые были осуществлены в течение прошедшего года с начала выпуска проекта.

Как получить обновление?

Есть две возможности обновления к новейшей сборке.

Уже установлено: Visual Studio автоматически обновляет расширение. Для принудительного обновления, откройте «Инструменты» -> «Расширения и обновления». Затем перейдите на вкладку слева «Обновление расширителя», и Вы увидите Windows Template Studio, после чего нажмите «Обновить».

Не установлено: Перейдите на https://aka.ms/wtsinstall, нажмите «загрузить» и дважды щелкните по VSIX установщику.

Что нового?

Microsoft много работали над улучшением пользовательского интерфейса и уверены, что теперь проект доступен для всех разработчиков.  Благодаря партнерству с командой Visual Studio был значительно улучшен интерфейс, что сделало его еще быстрее и доступнее. Также был улучшен процесс обновления шаблонов, фактические шаблоны и многое другое. Теперь Wizard может распознавать темные, светлые и высококонтрастные режимы Visual Studio.

К тому же, после того, как будет выпущено следующее Windows 10 обновление, будет добавлен навигационный контроль (NavigationView) для платформы UWP Community Toolkit с потрясающим гамбургер меню контролем, который обеспечит удобный переход между классической и контрольной платформами. На данный момент Microsoft работает над документацией, чтобы упростить переход между существующим контролем и новой платформой.

Документация 

Microsoft активно улучшает документацию. В будущем большинство документаций будут перенесены на docs.microsoft.com, которые охватят шаблоны и будут использовать актуальный wizard. Документация, которая останется на WTS GitHub, будет относиться к документации по модификации движка или созданию шаблонов для использования wizard. 

Будущее развитие, обновление и взаимодействие с сообществом

Двигаясь вперед, Microsoft продолжит улучшать и добавлять новые функции и шаблоны.
Большинство самых значимых пожеланий, замечаний об ошибках и лучших идей было предоставлено вами, участниками сообщества. Команда WTS чрезвычайно рада тому, что была частью этого проекта и благодарна всем, кто подал заявку и проявил участие. Если у Вас есть ошибки или идеи по добавлению новых функций, пожалуйста, отправьте Ваш запрос на GitHub --> https://aka.ms/wts 

Анонс в блоге команды Майкрософт


Posted on 27. February 2018

Новые направления и обновления в рекламной монетизации

Microsoft объявляет о новой политике в области эксплуатации рекламных блоков, обновлении пользовательского опыта для управления активными / неактивными рекламными блоками, политики в области включения рекламной сети по умолчанию и изменениях методологии показа объявлений в Windows приложениях. Если Вы используете объявления в Вашем Windows приложении с помощью Microsoft Advertising SDK (UWP или 8.x приложений), новая политика монетизации может принести Вам ущерб.

1) Автоматическое включение новых рекламных сетей для ручных рекламных блоков в UWP приложениях

Microsoft продолжает оценивать и внедрять новые рекламные сети для повышения доходности и предлагает более широкий спектр спроса для разработчиков (форматы, конкретные рынки спроса). Когда Microsoft добавили новую рекламную сеть в систему, рекламные UWP блоки, настроенные с параметром «Ручная настройка», не пользуются этими сетями, так как они автоматически не включены для ручных рекламных блоков. В будущем будут добавлены изменения для включения всех рекламных сетей по умолчанию для всех рекламных UWP блоков независимо от ручной или автоматической конфигурации. Для рекламных блоков с ручными настройками эти рекламные сети будут добавлены в конец каскадного заказа, поскольку каскадная конфигурация рекламной сети определяется владельцем приложения. Затем владелец может внести необходимые изменения, чтобы изменить порядок или отказаться от рекламных сетей по мере необходимости. Рекомендация Microsoft состоит в том, чтобы выбирать «Автоматическую» конфигурацию рекламного блока, чтобы максимально использовать возможности увеличения доходности.

2) Обновления политики при прекращении эксплуатации рекламных блоков

Microsoft добавляет политику прекращения эксплуатации рекламных блоков, в которой рекламный блок, который не сгенерировал какой-либо запрос объявления за последние 6 месяцев, будет деактивирован и удален. По текущим прогнозам активные приложения не будут затронуты из-за достаточно длительного периода (6 месяцев) неактивности рекламного блока. Однако есть исключения, при которых Вы можете пострадать. Например, если Вы создали рекламный блок на несколько месяцев раньше времени развертывания приложения и пытаетесь использовать этот рекламный блок, как будто Ваше приложение уже работает в реальном времени. Или Вы пытаетесь повторно использовать существующий рекламный блок из своего предыдущего неактивного приложения в новом приложении. Рекомендация в обоих случаях заключается в использовании вновь созданных рекламных блоков, вместо повторного использования уже существующих, в целях избежания потенциальной потери дохода от рекламы.

Наряду с этим объявлением политики, Microsoft вносит изменения в панель инструментов Windows Dev Center, чтобы упростить просмотр активных и неактивных рекламных блоков. Состояние рекламного блока идентифицируется в отдельном столбце; кроме того, Вы можете выбрать только активные или только неактивные рекламные блоки, поставив соответствующий фильтр в верхней части страницы.

3) Переход на стандартное измерение показа объявлений

Стандартное измерение показа объявлений требует, чтобы «объявление было загруженным и, как минимум, уже начало воспроизводиться», в таком случае оно будет считаться действительным. Для рекламных сетей, которые полагаются на другие методы, такие как подсчет показов на основе сервера, Microsoft вносит изменения в постепенную миграцию всех рекламных блоков для Windows приложений ближе к стандартным измерениям. Более конкретно, подсчет показов будет опираться на такие методы, как запуск маяка показа рекламной сети, после показа объявления пользователю. Это делается для того, чтобы лучше придерживаться IAB стандартов при подсчете показа объявлений и быть справедливыми по отношению к рекламодателям. Это также принесет пользу приложениям, которые стремятся сделать все правильно, убедившись, что объявления отображаются пользователям и доступны для просмотра.

Если Вы следуете рекомендациям, изложенным в этой документации и рекомендациям предыдущих блог постов о том, как создавать места размещения объявлений в Вашем приложении, Вы не будете ощущать негативного влияния на монетизацию Ваших объявлений. Однако, если Ваше приложение сконструировано таким образом, что это мешает изображению объявления, Вы можете получить негативные воздействия на доходы от Вашего приложения. Например, если Вы размещаете объявление в диалоговом окне пользовательского интерфейса, которое может быть легко закрыто пользователем до момента его отображения, или Ваше приложение показывает объявления в фоновом режиме, эти объявления, показы которых ранее были подсчитаны, не будут подсчитываться при новом стандарте.

Если у Вас есть вопросы или комментарии, пишите по этому адресу aiacare@microsoft.com Спасибо!



Posted on 15. March 2017

Материлы доклада App Extensions & App Services

10 марта прошла очередная встреча сообщества разработчиков Uneta.

Материалы моего доклада по теме "UWP: App Extensions and App Services" можно скачать здесь