Posted on 14. October 2017

Новые функции управления картами в Windows 10 Fall Creators Update

Команда разработчиков приложения Maps усердно работала над улучшением и добавлением новых функций для Maps платформы в Windows 10 Fall Creators Update. В дополнение к производительности и визуальным 3D улучшениям были добавлены, предложенные пользователями, функции, такие как возможность импорта 3D-моделей на карту и поддержка слоев и объединения элементов на карте. Также был улучшен API-интерфейс, чтобы пользователи могли указывать стили базовой карты и визуальные эффекты для добавленных на карту элементов. И вот, добавлена API функция для мест, чтобы просматривать соответствующую информацию о месте прямо в текущем контексте приложения.

Ознакомьтесь с основными улучшениями ниже и поддержите сообщество Maps хорошим отзывом!

3D-Здания

Возможно, Вы помните, что в предыдущем выпуске отсутствовали 3D-Здания. В этом обновлении команда Maps приложила все усилия для их возвращения (и улучшила те, которые не выглядели правильно). Следите за улучшениями 3D-зданий в ближайшие несколько месяцев!

3D-Объекты

Также был добавлен новый MapElement, под названием MapElement3D. Вместе с MapModel3D новый API можно использовать для удобного импорта и отображения 3D-объектов. Только представьте фантастические 3D шпили, машины, самолеты и многое другое. Ваши возможности бесконечны!

Вот несколько отличных MapElement3D примеров, отображающих 3D-модели в определенном месте, ориентации и масштабах на Windows 10 Map Control:

Аватары

Машины

Облака

API Наслоения Карт

Также был добавлен новый MapLayer класс, первым источником которого является MapElementsLayer. В отличие от уже существующего API MapControl.MapElements, он может использоваться для управления группами элементов независимо как единое целое или для выполнения совместной цели.

Прикрепляйте Ваши данные к карте с помощью MapControl.Layers

Вы можете привязывать элементы на карте к собственным коллекциям бизнес-объектов с помощью API Map Control.Layers.

Смотрите: Как искать интересующие Вас объекты на карте.

API Расширения Моделирования Карт

На данный момент расширяется текущий набор API-интерфейсов для компоновки карт на Windows 10 Map Control. В предыдущем выпуске были добавлены API MapStylesheet, чтобы Вы могли динамично изменять внешний вид карты в режиме реального времени. В этом выпуске команда Maps добавляет поддержку двух новых свойств в MapElement: MapStyleSheetEntry и MapStyleSheetEntryState, которые могут использоваться для более обширной настройки внешнего вида элементов на Вашей карте с помощью одного из элементов по умолчанию.

Смотрите также: Как настроить Ваши элементы на карте.

Ниже приведены примеры настроек, которые могут взаимодействовать с элементами на карте с помощью новых расширений стилей в Windows 10 Map Control:

Лучшая интеграция Ваших элементов с базоваой картой с помощью MapStyleSheetEntry

Вы можете сделать так, будто элементы на карте являются частью базовой карты, настроив Ваш собственный стиль для существующей позиции в таблице стилей карты, такой как Water. См раздел MapStyleSheetEntry с полным перечнем позиций, которые Вы можете выбрать.

Логотип Bing визуализируется с помощью Windows 10 Map Control путем изменения полигона MapStyleSheetEntry на свойство Water.

Реализация структуры Ваших элементов на карте с помощью MapStyleSheetEntryState

Вы также можете изменить внешний вид Ваших элементов на карте, используя состояния по умолчанию в таблице стилей карты, такие как Hover и Selected, или обойти их для создания собственных. Смотрите раздел MapStyleSheetEntriesStates с полным перечнем состояний, которые Вы можете выбрать.

Bellevue Square, City Center и Meydenbauer POIs отображаются с помощью Windows 10 Map Control, переопределяя масштаб уже существующей UserPoint позиции и изменяя свойство MapStyleSheetEntryState значка карты в пользовательское состояние, которое расширяет существующие состояния позиций Hover и Selected.

Информация о месте

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

https://github.com/Microsoft/Windows-universal-samples/tree/dev/Samples/MapControl

API Обновления и Дополнения

Ниже Вы можете ознакомиться со списком API, которые были добавлены в Windows 10 Creators Update:
Для получения дополнительной информации о всех новых API перейдите в MSDN.



Posted on 4. September 2017

Лучшие рекомендации по использованию видеорекламы в Windows приложениях

Межстраничные видеоролики - это очень привлекательный вид рекламы, который при правильном использовании имеет более высокий потенциал монетизации по сравнению с традиционными видами объявлений. Промежуточные видеоролики, как правило, длятся от 15 до 60 секунд и занимают весь экран, вовлекая пользователя в рекламу бренда или приложения, а также приводят к значительно лучшим преобразованиям по сравнению со стандартными видами рекламы.

Вот некоторые советы и рекомендации по использованию межстраничных видеороликов в приложении для максимальной доходности:

Рекомендуется:

  1. В Вашем приложении или игре должен быть определенный пользовательский интерфейс, где будут отображаться видеоролики. Поскольку видеореклама полностью накладывается на экран приложения, она должна использоваться с осторожностью и не должна прерывать пользователя во время игры или использования приложения. Типичные примеры использования межстраничных объявлений находятся между уровнями игры или при переходе на новую вкладку в приложении.
  2. Установите «Автоматическую» конфигурацию рекламного блока. Это позволит Microsoft определять лучшую последовательность рекламных блоков для каждого входящего запроса объявлений, предоставляя разработчикам максимальный потенциал дохода от приложений.
  3. Поддерживайте эффективную видимость видеообъявлений. СМИ Рейтинги определяют эффективную рекламную видимость как: «Не менее 50% пикселей в рекламе находятся на вкладке браузера в фокусе видимого пространства страницы браузера; требование пикселя выполняется в течение как минимум двух или более непрерывных секунд в любой точке рекламы». Для лучшей доходности и предотвращения мошенничества многие рекламодатели платят только тогда, когда впечатление от просмотра действительно эффективное. Убедитесь, что, когда Вы показываете видеоорекламу в Вашем приложении, она воспроизводится полностью и не заслоняется другим экраном в приложении.

 

Не рекомендуется:
  1. Предварительное кэширование на длительный период. Объявление от того же рекламного провайдера, доступное в данный момент, может быть недоступно уже через несколько секунд. Учитывая это, разработчики приложений должны свести к минимуму предварительную выборку объявлений до менее чем 8 секунд, прежде чем они будут готовы к добавлению рекламы в приложение.
  2. Повторять несколько одинаковых запросов. В случае отсутствия ответа на объявление, разработчик не должен постоянно добавлять по несколько рекламных запросов. При запуске нескольких запросов и отсутствии показа рекламы, рекламный блок становится все более низкого качества, что еще больше снижает вероятность получения рекламы в будущем. Сделайте следующий запрос только в том случае, если он будет на ровне с пользовательским потоком в приложении или игре, и Вы будете снова готовы показать объявление.
Microsoft тесно сотрудничает с многими рекламными сетями, чтобы предоставить лучший спрос на Windows приложения и повысить уровень рейтингов и монетизацию для разработчиков. Чтобы узнать больше о добавлении видеообъявлений в Ваши приложения, прочитайте эту статью. Спасибо, что Вы с нами!



Posted on 2. September 2017

Windows 10 Fall Creators Update ожидается 17 октября

Обновление Windows 10 - Fall Creators Update - будет доступно во всем мире 17 октября. С новым Fall Creators Update Вы сможете развиваться в различных творческих сферах. Microsoft произвел эволюцию в фотосъемке, которая позволит Вам наслаждаться любимыми воспоминаниями на фото, видео и 3D-эффектах; также добавлены усовершенствования в играх, безопасности, доступности и захватывающие новые функции для Windows Mixed Reality. Все эти нововведения вскоре будут воплощены в жизнь. Более того, создано множество продуктивных и многофункциональных устройств, которые будут доступны от партнеров Microsoft. 

IFA - ежегодная международная выставка бытовой электроники, проводимая в Берлине, даёт возможность участникам представить свои новейшие продукты и разработки для широкой общественности. Невероятное количество мировых инноваций Microsoft и его партнеров представляется именно там. Выставка, также известная как предшественник Берлинского радиошоу, была открыта Альбертом Эйнштейном в 1930 году. В 1930 году была проведена публичная демонстрация телевизионной системы с использованием электронно-лучевых трубок. Все это произошло за год до начала телевизионного прорыва в Германии. В этом году Microsoft также анонсируют все свои новые разработки!

Эта неделя стала большим прорывом для Microsoft! В понедельник - захватывающие обновления Windows Mixed Reality с возможностью погружения в среду смешанной реальности. В среду - доступ к Alexa через Cortana на Windows 10 ПК. И сегодня, мы расскажем Вам больше о предстоящем обновление Windows 10.

Четвертое самое обширное обновление Windows 10 - платформа для Вашего творчества. Основываясь на наблюдениях, Microsoft решили предоставить всем пользователям больше возможностей для развития, работы и вдохновления!

Творчество с новыми функциями - это то, что побуждает Microsoft двигаться только вперед. Windows 10 - самая популярная Windows версия на планете, и уже более 500 миллионов пользователей используют ее дома, на работе, в школе и не только.

Уже сегодня, Microsoft рады сообщить, что следующее обновление Windows 10, Fall Creators Update, будет доступно во всем мире 17 октября.

17 октября - Выпуск Windows 10 Fall Creators Update

Windows Ink

Инструмент Windows Ink продолжает улучшаться, позволяя рисовать на PDF-файлах, комментировать просто и быстро, делиться с другими, а также расширяет возможности того, что Вы можете делать с ручкой и бумагой. Smart Ink применяет искусственный интеллект к чернилу, автоматически делая квадраты, которые Вы рисуете, более правильными, или превращая коробки в стол без Ваших усилий. Windows Find my Pen расширит Ваше представление о рисовании с ручкой.

Фото и Видео

Приложение Photos было обновлено с добавлением трансляций для фото историй, видео, музыки, 3D и даже чернилами.

OneDrive Files On-Demand

Все созданные работы Вы можете сохранить в OneDrive Files On-Demand, и получать доступ к Вашим облачным файлам, так же как и к любым другим файлам на Вашем ПК, без использования локальной памяти для хранения.

Игры

В Fall Creators Update улучшен функционал игрового режима (Game Mode) и добавлена новая кнопка на игровой панели, которая позволяет игрокам прочувствовать полную мощность игр на обычном устройстве, как если бы это была игра на Xbox. И чтобы воспользоваться этой функцией, Вы можете попробовать ряд игр Xbox Play Anywhere, в том числе, Cuphead, Forza Motorsport 7, Super Lucky's Tale and Middle-earth: Shadow of War. Если Вы любите Xbox игры, 7 ноября Вы сможете сыграть их на самой мощной приставке Xbox One X.

Безопасность

Главная цель Microsoft - обеспечить полную безопасноть во время Вашего использования. С Fall Creators Update, Windows Defender был улучшен и оснащен новыми процессами защиты. С помощью облачного интеллекта, Вам предоставляется качественная защита от вирусов, вымогательств и эксплуатаций. Windows 10 S специально разработан для лучшей безопасности, включает продуктивный функционал, а также продолжительность заряда батареи и производительности Вашего устройства.

Основы Fall Creators Update - творчество и качественная работа, одновременно с лучшей безопасностью и защитой!

Доступность

Fall Creators Update расширяет возможности Windows  для тех, у кого болезнь Лу Герига - прогрессирующее нейродегенеративное заболевание, которое влияет на способность мозга контролировать мышцы тела. Новая функция Eye Control реализует невероятную технологию отслеживания глаз, которая позволяет писать и управлять мышью, просто с помощь глаз. Microsoft надеется, что это улучшит жизнь тех, кто болеет Лу Герига. Это невероятный прорыв в доступности, который Microsoft представит миру в Fall Creators Update.

Windows Mixed Reality


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

Все гарнитуры Windows Mixed Reality будут доступны 17 октября с выходом Fall Creators Update.

Если же у Вас не будет гарнитуры Mixed Reality, Вы сможете погрузиться в смешанную реальность прямо на Вашем ПК. С помощью Mixed Reality Viewer Вы можете просматривать 3D-объекты - либо на Remix3D.com, либо создавать собственные с Paint 3D.

Инновации современных устройств с Fall Creators Update

На этой неделе команда Microsoft и ее партнеры уже анонсировали целый ряд великолепных и многофункциональных современных устройств на выставке IFA, в их числе новые Windows 2-в-1 ноутбуки, игровые ПК с новейшими 8-процессорными Intel обновлениями, включая новейшие графические карты NVIDIA, которые позволяют работать с Windows Mixed Reality, обеспечивают бесперебойную работу, предлагают OLED и 4K экраны для самых потрясающих визуальных эффектов и многое другое.

Премиум-ПК

Modern devices bring the magic of the Fall Creators Update

Благодаря процессору Intel Core i7 8-го поколения, супертонкий Lenovo Yoga 920 2-в-1 - это то, что нужно для продуктивной работы, а при подключении к внешней USB-C Thunderbolt 3 Dock станции, он превратится в мощный игровой ПК для Windows Mixed Reality. Yoga 920 был разработан для того, чтобы предоставить более удобное использование: он включает в себя микрофоны с дальним звуковым полем, чтобы Вы могли использовать Cortana во всех целях, даже таких, как включение компьютера, воспроизведение музыки, добавление напоминаний и многое другое с помощью голосовых комманд. Опциональная ручка Lenovo Active Pen с 4096 уровнями чувствительности, расширит творческий и кросс-прикладной потенциал Вашего ПК.

Acer Switch 7 Black Edition - безвентиляторный 2-в-1 ноутбук с дискретной графикой. Благодаря процессору 8-го поколения Intel Core i7 и графике NVIDIA GeForce MX150 он является идеальным помощником для выполнения интенсивных задач, творческой работы и потоковой передачи контента. Несмотря на мощные функции, инновационная технология Dual LiquidLoop от Acer поддерживает Switch 7 в тихом режиме. Switch 7 Black Edition оснащен встроенным стилусом без батареи, с помощью технологии Wacom EMR, которая имеет 4096 уровней чувствительности к давлению и поддержку наклона пера для управления углом, шириной или затенением штриха, предоставляя пользователям более аутентичный опыт для записей и рисования при использовании Windows Ink.

Популярные ПК

Popular PCs

Dell Inspiron 7000 2-in-1, разработанный для людей в движение или многопользовательского домохозяйства, доступен в 13 и 15 дюймах в алюминиевом корпусе Era Gray, имеет потрясающие визуальные эффекты с узкой рамкой, стандартный FHD 10- сенсорный IPS-дисплей с сенсорным дисплеем и опциональным сенсорным дисплеем премиум-класса 4K UHD IPS. Он предлагает мощную производительность с новыми процессорами Intel 8-го поколения, памятью DDR4; гибкие возможности подключения USB Type-C с поддержкой DisplayPort и Power Delivery, более длительный заряд батареи и тихую работу со стандартными SSD. Опциональная Dell Active Pen предоставляет естественное ощущение при использовании Windows Ink для рисования, записей или заметок.

Lenovo Miix 520 - это лучшее сочетание функциональности и съемных форм-факторов, разработанных для использования множества цифровых технологий и инструментов. Он работает на базе новейших 8-дюймовых четырехъядерных процессоров Intel Core i7 с до 16 ГБ памяти DDR4 и до 1 Тбайт PCIe SSD, Miix 520 - это удобная работа с Windows Ink для создания записей, заметок, презентаций или использования WorldView камеры для захвата изображений и редактирования их в 3D.

Профессиональные ПК

 

HP’s ProBook 430 G4 - это надежный девайс, предназначенный для деловых людей, которые должны быть продуктивными в офисе или вне офиса. Он оснащен батареей, которая держит заряд батареи целый день, алюминиевой клавиатурой и защищает Ваши приложения и данные с Windows 10 Pro.

Тонкий и легкий Dell Latitude 12 7285 2-в-1 идеально подходит для выполнения поставленных задач. Это бизнес-устройство оснащено дисплеем Infinity edge, возможностью беспроволочного заряда, встроенным Windows 10 Pro и поддержкой Windows Hello для дополнительной безопасности.

Студенческие ПК

Fujitsu Lifebook P727 с Windows 10 S - это девайс 2-в-1, предназначенный специально для студентов, которым требуется мощное и надежное устройство с поддержкой Windows Ink и Active Stylus для записи заметок, создания диаграмм и профессиональная клавиатура для написания эссе и отчетов. Батарея этого ПК может загружаться, даже когда компьютер находится в резервном режиме.

Сочитание красоты и производительности на ноутбуке Surface - правильный выбор для каждого. Он оснащен всеми необходимыми функциями для поддержания производительности, долгого заряда батареи, высококачественного отображения и мобильности. Материал Alcantara, покрывающий клавиатуру, показывает его элегантность и дизайн. Каждая деталь этого устройства тщательно продумана, и распространена на программное обеспечение. Surface Laptop поддерживает Windows 10 S с лучшими программами и сервисами Microsoft, такими как Office и OneDrive.

Игровые ПК

Gaming PCs

ASUS анонсировал ROG Chimera, ноутбук с ультрасовременным 17,3-дюймовым широкоформатным дисплеем FHD IPS, который оснащен впечатляющей антибликовой Full HD IPS панелью с технологией G-SYNC для частоты обновления 144 Гц и временем отклика 7 мс. Работающий с новейшим процессором Intel Core i7-7820HK и графикой NVIDIA GeForce GTX 1080, ROG Chimera объединяет лучшие  функции ноутбуков и консольных игр. Он оснащен встроенной Xbox Wireless, поэтому геймеры могут без особых усилий подключать свои любимые Xbox аксессуары к ПК без каких-либо адаптеров, также не придется менять коммутаторы при переключении между консолью и ПК.

Новый HP Omen X Laptop предназначен исключительно для любителей игр и eSports, ищущих бескомпромиссную производительность. HP оснастил OMEN X Laptop с разблокированными Intel Core i7 процессорами Intel 7th, опциями памяти XMP для разгона памяти и протестированных до DDR4-2800 профилей, а также разгоняемыми по графику до NVIDIA GeForce GTX 1080 видеокартами. Высокопроизводительные компоненты, передовые термальные опции, быстрые и реагирующие дисплеи, настраиваемая механическая клавиатура и усовершенствования программного обеспечения для точной установки компонентов, гарантирует, что Omen X обеспечит непревзойденную производительность игр и предоставит потрясающий дизайн. 

Гарнитуры Windows Mixed Reality
Этой осенью Acer, Dell, HP и Lenovo выпускают коллекцию гарнитур и контроллеров для Windows Mixed Reality, начальная цена гарнитур будет всего лишь $299.

Windows Mixed Reality headsets

  • Acer выпускает собственный Windows Mixed Reality Headset с контроллерами движения. Когда гарнитура соединена с контроллерами, Вы можете пользоваться полной позицией и поворотным отслеживанием на гарнитуре, чтобы легко создавать контент или играть в игры.
  • Гарнитура ASUS Windows Mixed Reality будет доступна весной 2018 года и предложит уникальный дизайн с рисунком сотен 3D-полигонов и эффектом глянцевых тонов.
  • Dell Visor оснащен жидкокристалическим дисплеем с высоким разрешением 1440 x 1440 для резкого и плавного панорамного просмотра на 360 ° для просмотра «как если бы Вы были там». Он продуманно спроектирован для удобства и комфорта с хорошо прошитыми накладками для головы и лица, которые предоставят все удобства, даже для пользователей, которые носят очки.
  • Гарнитура HP Windows Mixed Reality также будет оснащена контроллерами движения, чтобы передать лучшие впечатления от смешанной реальности.
  • Гарнитура Lenovo Explorer эргономично спроектирована и оптимизирована для Вашего комфорта, поэтому Вы можете погрузиться в мир смешанной реальности на длительный период времени.
Все эти новые устройства будут доступны, когда выйдет Windows 10 Fall Creators Update (17 октября).

Главная цель Microsoft - дать возможность каждому человеку и каждой организации во всем мире достичь большего. Одним из способов является принятие выпустить обновление Windows и расширить возможности всех пользователей с помощью Windows 10 Fall Creators Update.

Перед нами дверь в будущее и Microsoft готовы открыть ее для нас на международной выставке IFA!



Posted on 16. August 2017

Новые инструменты в Windows Device Portal для Windows 10 Fall Creators Update

Device Portal в Windows 10 Fall Creators Update теперь предлагает несколько новых инструментов для Windows платформы, чтобы помочь Вам провести локальную проверку Вашего UWP, изучить возможности Mixed Reality, создать новое аппаратно-программное оборудование и протестировать новую систему для установки Вашего приложения. В этой статье мы расскажем Вам больше об этих возможностях!

Если Вы не знакомы с Device Portal, Вы можете ознакомиться с его особенностями на Device Portal, или просмотреть новый docs.microsoft.com, чтобы узнать, как его настроить.

Все эти инструменты поддерживаются REST API, поэтому Вы можете использовать его из сценариев или клиентских приложений с помощью Device Portal Wrapper.

Тестирование на основе местоположения

У большинства из нас нет возможности для тестирования приложений по всему миру, но теперь этому есть решение! Инструмент «Местоположения» в Device Portal позволяет легко изменять местоположение, которое Windows привязывает к приложениям. Выбрав «Переопределить», Вы можете изменить местоположение устройства на все, что Вы установили, используя текстовые поля или карты. Обязательно уберите галочку, когда закончите, чтобы Ваше местоположение (и часовой пояс) вернулись в реальную геолокацию...

Рисунок 1: Приложение News актуально и соответсвует местным заголовкам!

Это также работает для веб-страниц в Microsoft Edge, позволяя Вам проверять Ваши сайты в разных уголках мира.

Примечания о том, что этот инструмент может и не может сделать:
  • Он не именяет локацию вашего ПК! Таким образом, приложение News все еще видит местоположение пользователя EN-US в середине Италии. 
  • Вы можете не видеть все приложения, использующие это местоположение. Некоторые программы не используют Windows API для определения местоположения или имеют специальную логику (например, используя Ваш IP-адрес) для определения Вашего местоположения.
  • Этот инструмент отмечает PositionSource для местоположения данных как «Default». Некоторые приложения могут проверять источник и изменять их поведение на его основе.
USB диагностика

USB диагностика распространяется на всех пользователей аппаратного обеспечения - если Вы уже знакомы с «HLK» или «WDK», это будет очень удобно. USB команда обновила инструмент USBView для работы внутри Device Portal, поэтому разработчики, работающие на новом оборудовании, будут иметь больше возможностей.

Инструмент USB Devices может оказаться немного сложным - для начала, откройте меню в правом верхнем углу и перейдите к разделу «Добавить инструменты в рабочую область». Прокрутите страницу вниз и проверьте раздел «USB-устройства», а затем нажмите «Добавить». В результате, Вы получите полный обзор Ваших USB-узлов, контроллеров и периферийных устройств. Узлы и контроллеры расширяются, чтобы показать отдельные устройства, используя значок + (плюс), и при нажатии на механизм, он будет расширяться, чтобы показать свойства всех элементов.

Инструмент Streaming Install Debugger

Windows 10 Creators Update добавил «потоковую установку» для UWP, которая позволяет пользователю запускать приложение перед его окончательной загрузкой. Для легкой проверки данной функции, команда App Model добавила инструмент Streaming Install Debugger в Device Portal. Чтобы использовать его, разверните приложение с группами контента на Вашем устройстве, а затем откройте Streaming Install Debugger. В нем Вы сможете редактировать состояния групп контента. Для того, чтобы Вы могли протестировать работу Ваших приложений, происходит имитация потоковой установки, и Вы можете удостовериться, что все действия правильно выполняются при отсутствии групп контента.


Для получения дополнительной информации ознакомьтесь с блогом Andy Liu, где рассказывается о новых инструментах App Installer и Streaming Install Debugger.

Mixed Reality (Смешанная реальность)

Одним из прорывов в обновлении Fall Creators Update является добавление поддержки Mixed Reality на Windows Desktop. В рамках этой версии Microsoft включает набор инструментов, помогающих разработчикам создавать потрясающие приложения для Mixed Reality. Два из этих инструментов - 3D View и Framerate counter - уже могут быть знакомы для HoloLens разработчиков. Также добавлен новый вариант запуска приложения, который появляется, когда у Вас установлена необходимая гарнитура для запуска Вашего приложения в Mixed Reality.

Частота смены кадров - важный фактор при создании удобных приложений для смешанной реальности, и разработчикам необходимо оптимизировать производительность, чтобы достичь абсолютной частоты смены кадров в системах, которые они поддерживают. Инструмент Frame Rate в Device Portal помогает, показывая разработчикам как частоту смены кадров их приложения, так и компоновщика системы.

 

3D View помогает при тестировании гарнитуры с эффектом погружения в среду и с реальным миром, отображая его положение, когда оно перемещается по пространству.

 

Что же хорошего в том, если Вы не можете запустить Ваше приложение, подключая гарнитуру с эффектом погружения в иную среду? Теперь, когда у Вас установлена встроенная гарнитура, инструмент «Installed Apps» добавит кнопку, позволяющую запустить приложение в HMD. Не смотря на то, что приложения с эффектом другой реальности всегда будут работать в Mixed Reality, эта новая кнопка также особенно полезна для 2D UWP приложений (или приложений, которые переключаются между 2D и иной реальностью), когда Вы хотите протестировать их в Mixed Reality. 

 

В завершение нашего поста, мы сообщаем, что команда Microsoft будет рады получить Ваши идеи по улучшению Device Portal, которые помогут разрабатывать или отлаживать приложения. Оставьте Ваш комментарий на UserVoice. Если Вы столкнулись со сбоями во время отправки Вашего отзыва, отправьте его через центр обратной связи "Feedback Hub".

Похожие посты:

Использование Device Portal для просмотра журналов отладки для UWP

Использование App File Explorer для просмотра данных Вашего приложения



Posted on 11. August 2017

Xbox Live Creators Program

https://blogs.windows.com/buildingapps/2017/08/10/xbox-live-creators-program-now-live/#8IBMelrVTScVKZzG.97 

В марте Microsoft выпустили Xbox Live Creators Program. Уже сегодня рад сообщить, что любой разработчик может публиковать свои игры на Xbox One и Windows 10. У Microsoft уже были отличные игры, опубликованные во время предварительного просмотра программы (смотрите список ниже!), Но пришло время опубликовать и Вашу игру. Microsoft стремится обеспечить каждому разработчику, который хочет опубликовать свою игру на ПК под управлением Windows 10 и на Xbox One console family и Creators Program позволяет публиковать такие приложения.

Что же такое Creators Program? Xbox Live Creators Program позволяет любому разработчику напрямую публиковать свои игры - любую из своих игр - на Xbox One consoles и ПК под управлением Windows 10 со стандартным процессом сертификации, уже существующим для любого другого приложения или игры на Universal Windows Platform. Другими словами, если у Вас есть Dev Center аккаунт, Вы сможете опубликовать Вашу игру на Xbox One и ПК под управлением Windows 10.

Всё становится еще лучше! Используя Creators Program Вы также сможете реализовать ряд сервисов Xbox Live непосредственно в Вашей игре. Такие вещи, как Gamertag Presence, Xbox Live leaderboards и Connected Storage. Данные возможности облегчат Ваши задачи по разработке игр, а также улучшат опыт Ваших пользователей. Вы также можете использовать функции "убийц", такие как Game Hubs и Clubs, Mixer streaming (и интеграцию для более интерактивного взаимодействия) и некоторые действительно превосходные возможности доступа, которые сделают Вашу игру доступной для еще более широкой аудитории.

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

Любая Creators Program игра, опубликованная в Windows 10 Store будет указана в категории «Игры». На Xbox One console создан специальный Store раздел под названием Creators Collection, так что Ваша игра будет доступна пользователям, которые ищут что-то новое. Microsoft также сделали это по желанию и отзывам геймеров, родителей и разработчиков, которые так любят Xbox One Store. Итак, наличие Creators Collection предоставляет самые лучшие возможности в Store и доступ абсолютно всем пользователям.

Нравится ли Вам новая Creators Program? Теперь всё намного легче! Первый шаг - создать игру, используя инструменты UWP и Xbox Live SDK, которые Вы уже, вероятно, использовали: Visual Studio, игровые движки, такие как Unity, Construct 2, MonoGame и Xenko, объединяя их с распространенным Xbox One console и Вашим Dev Center аккаунтом. Вам нужно установить бесплатное приложение Dev Mode Activation с Xbox Store, и тогда Вам будет достпуно конвертирование этой распространенной программы с помощью пару кликов.

Аккаунт Dev Center - стандартный для тех, кто разрабатывает приложения или игры для Microsoft. Если у Вас еще нету аккаунта, он будет стоить всего 20 долларов в качестве разовой платы. Затем, приступите к Вашей Xbox Live интеграции, выполнив пошаговое руководство для использования Creators Program, и также Xbox Live Creators Program.

Игры Creators Program имеют доступ к большому набору Xbox Live сервисов, но не ко всем из них. Вы сможете реализовать такие функции, как вход и присутствие, использование Вашего Gamertag, leaderboards, доступ к Вашему Activity Feed, Game Hubs, Clubs, Party Chat, Game DVR и Mixer трансляции.

Однако, поскольку Creators Program - открытая, а не управляемая программа, некоторые сервисы Вам недоступны: Achievements, Gamerscore или сетевой мультиплеер. Хорошая новость заключается в том, что если Вы хотите получить доступ к этим функциям, Microsoft рекомендует обратиться к ID@Xbox программе, где все сервисы будут доступны. И, конечно, есть путь для перехода игр от Creators Program к ID@Xbox в течении разработки (и даже после того, как Ваша игра была опубликованна в Store), если затем Вы решите добавить Gamerscore, Achievements или интернет-мультиплеер.

Не смотря на то, что ID@Xbox была создана для профессиональных разработчиков игр, которые хотят использовать полный набор функций Xbox Live через весь процесс сертификации, Creators Program предоставляет абсолютно всем разработчикам «нужный» набор Xbox Live услуг. Creators Program - это упрощенный способ создания и публикации игр в Xbox сообщество как для новичков в мире разработки, так и для настоящих профессионалов.

Microsoft предоставил несколько наглядных примеров. Более того, это самое начало! Microsoft собирается подчеркнуть все преимущества игр Creators Program, выпуская больше игр на Xbox Wire. Ваша игра тоже должна быть в этом списке.

Ниже предоставлены первые преимущества, доступные с помощью этой программой:

  • Animal Rivals, Blue Sunset Games: Animal Rivals - боевая игра для одного-четырех игроков. Погрузитесь в игровой мир и сражайтесь за трон Animalonia как один из соперников в разных мини-играх и местах. Сама игра представляет собой уникальный стиль, сочетающий мультяшный внешний вид и сатирический подход. (Xbox One, Windows 10)
  • Block Dropper, Tresiris Games: Block Dropper - это быстрый, аркадный стиль с 3D-платформером. Старайтесь не сдаваться, когда Вы направляете Вашего персонажа через сложный режим одиночного игрока или хватаете друга, чтобы сражаться в местной многопользовательской Block Battle Arena. Tresiris - небольшая игровая студия, базирующаяся в Олате, штат Канзас, которая создает веселые и простые игры в отличном качестве. (Xbox One, Windows 10)
  • Crystal Brawl, Studio Mercato: Gauntlet встречается с NBA Jam в Crystal Brawl, локальной многопользовательской игре с захватом 2v2, которая объединяет быстрые действия с помощью стратегии, подобной MOBA. Выберите из множества персонажей с различными способностями: каждый персонаж обладает уникальной способностью, которая изменяет местность. Экспериментируйте с различными комбинациями символов, чтобы обнаружить скрытые стратегии! Studio Mercato - игровая студия, которая находиться в Нью-Йорке. (Xbox One, Windows 10)
  • Derelict Fleet, Bionic Pony: Derelict Fleet - быстро развивающаяся космическая боевая игра. Вам поручено защищать флот беженцев, когда вы путешествуете по звездам, ища новую колонию, чтобы позвонить домой. Bionic Pony - небольшая инди-студия, базирующаяся в Тампе, штат Флорида, которая начала создавать Xbox Live инди-игры в 2010 году. (Xbox One)
  • ERMO, Nonostante: ERMO - это расслабляющая игра-головоломка с умиротворяющей и мирной графикой. Увлекитесь ландшафтами и цветами в ERMO. Вы узнаете правила игры за несколько секунд, и ERMO захватит Вас в удивительный игровой мир. (Xbox One)
  • GalactiMAX!, ONLYUSEmeFEET: В темноте пространства GalactiMAX есть игрок, снимающий инопланетян для очков, чтобы пронзить небеса в классическом аркадном шутере! По мере того, как больше инопланетян будут побеждены, корабль игрока будет увеличиваться по размеру и мощности. Как можно заполучить этот корабль?! (Xbox One, Windows 10)
  • kubic, Pixel Envision Ltd: kubic - это расслабляющая игра-головоломка с оптической иллюзией, основанная на M.C. Искусство Эшера, невозможные объекты и другие геометрические конструкции. Смысл заклчается в том, чтобы сконструировать конфигурацию цели из нескольких частей. (Xbox One, Windows 10)
  • Space Cat!, GershGamesLLC: Простреливайте Ваш путь мимо натиска врагов и боссов. Собирайте оружие, ракеты, бомбы, лазерные лучи и многое другое. GershGamesLLC - группа молодых любителей, которые веселятся в выходные. (Xbox One, Windows 10)
  • Stereo Aereo, The Stonebot Studio: Stereo Aereo - это ритм-игра, вдохновленная влиянием поп-культуры 80-х годов. Вы, как игрок, должны убедиться, что посредственная космическая рок-группа Stereo Aereo добирается до своей жизни, меняя концерт вовремя, в этой комической научной фантастике. (Xbox One, Windows 10)

В завершение поста, хочу отметить, что Creators Program стала открытой для любого разработчика, команда Microsoft также объявила конкурс Dream.Build.Play, который включает категорию Xbox One для любого разработчика игр, который использует функции Creators Program в своей игре. Таким образом, Вы можете не только получить Вашу игру на Xbox One console первым, у Вас есть шанс выиграть за это деньги. 
Желаю удачи!



Posted on 3. August 2017

Настройка Вашего приложения для входа в систему

В течение долгого времени пользователи ПК могли настроить приложения Win32 для запуска или входа в систему. Это также было возможно для приложений Desktop Bridge с момента обновления Windows 10 (v10.0.14393.0). Теперь Microsoft расширили эту функцию, чтобы в нее также вошли стандартные UWP приложения. Это доступно в сборках Insider Build 16226 и вместе с соответствующим SDK. В этом посте мы рассмотрим изменения кода, которые необходимо внести в манифест и в класс приложения для обработки сценария запуска, и то, как Ваше приложение может удовлетворять требования пользователей. 

Вот пример приложения, так называемого TestStartup - приложение предлагает кнопку для запроса включения режима запуска и сообщает текущий статус. Как правило, Вы добавляете такой вариант в какую-либо страницу настроек в приложении.

 

Прежде всего следует отметить, что Вы должны использовать расширение windows.startupTask Extension в манифесте приложения в узле «Extensions», который является сгенерированным узлом приложения. Ознакомьтесь с подробной информацией здесь. Такая же декларация расширения используется как для Desktop Bridge, так и для стандартных UWP приложений, но есть некоторые отличия.

 

  • Desktop Bridge доступен только на десктопе, поэтому он использует пространство имен XML для конкретного рабочего стола. Новая реализация UWP предназначена для использования, как правило, в UWP, поэтому использует общее пространство имен UAP (контрактная версия 5) - хотя в настоящее время он по-прежнему доступен только на рабочем столе.
  • Desktop Bridge EntryPoint должен быть «Windows.FullTrustApplication», тогда как для стандартного UWP это полное имя пространства имен Вашего класса приложения.
  • Приложения Desktop Bridge могут установить атрибут значения Enabled, а это означает, что приложение запустится при запуске без необходимости ручного включения. И наоборот, для стандратных UWP приложений этот атрибут игнорируется, а функция автоматически становится недоступной. Вместо этого пользователь должен сначала запустить приложение, и приложение должно запросить его включение для активации запуска.
  • Для приложений на Desktop Bridge разрешено несколько StartupTask расширений, каждый из которых может использовать другой исполняемый файл. И наоборот, для стандратных UWP приложений у Вас будет только одно исполняемое и одно StartupTask расширение.
Приложение Desktop Bridge 

xmlns:desktop="http://schemas.microsoft.com/
appx/manifest/desktop/windows10"
  
UWP приложение 

xmlns:uap5="http://schemas.microsoft.com/
appx/manifest/uap/windows10/5"
  

Для приложений Desktop Bridge и стандартных UWP приложений пользователь всегда находится под контролем и может в любой момент изменить Enabled состояние запуска Вашего приложения на вкладке «Startup» в Task Manager:

 

Также, для обоих типов приложений, приложение должно запускаться, по крайней мере, один раз, прежде чем пользователь сможет изменить состояния Disabled/Enabled. На самом деле это немного усложненно: если пользователь не запускает приложение, а затем пытается изменить состояние на «Enabled» в Task Manager, это скорее всего будет установлено. Однако, если Вы закроете Task Manager и снова откроете его, Вы будете видеть, что состояние по-прежнему отключено. Что же происходит? Task Manager сохраняет выбор пользователя в состоянии Enabled - но это фактически не позволяет приложению активироваться при запуске, если оно не будет запущено по крайней мере один раз - следовательно, это и есть причиной, по которой устанавливается состояние Disabled.

В Вашем UWP коде Вы можете установить запрос для включения при запуске. Для этого используйте метод StartupTask.GetAsync для инициализации объекта StartupTask (описанного здесь) - затем, перейдите в TaskId, указанного вами в манифесте, - и после этого, вызовите метод RequestEnableAsync. В тестовом приложении команда Microsoft делает это в обработчике Click. Возвращаемое значение запроса - это новый (возможно, неизменный) StartupTaskState

 

async private void requestButton_Click(object sender, RoutedEventArgs e)
{
    StartupTask startupTask = await StartupTask.GetAsync("MyStartupId");
    switch (startupTask.State)
    {
        case StartupTaskState.Disabled:
            // Task is disabled but can be enabled.
            StartupTaskState newState = await startupTask.RequestEnableAsync();
            Debug.WriteLine("Request to enable startup, result = {0}", newState);
            break;
        case StartupTaskState.DisabledByUser:
            // Task is disabled and user must enable it manually.
            MessageDialog dialog = new MessageDialog(
                "I know you don't want this app to run " +
                "as soon as you sign in, but if you change your mind, " +
                "you can enable this in the Startup tab in Task Manager.",
                "TestStartup");
            await dialog.ShowAsync();
            break;
        case StartupTaskState.DisabledByPolicy:
            Debug.WriteLine(
                "Startup disabled by group policy, or not supported on this device");
            break;
        case StartupTaskState.Enabled:
            Debug.WriteLine("Startup is enabled.");
            break;
    }
}

 

Поскольку приложения Desktop Bridge имеют компонент Win32, они работают с гораздо большей мощностью, чем стандартные UWP приложения. Они могут установить значение Enabled для StartupTask в манифесте и для этого не нужно вызывать API. Для стандатрных UWP приложений поведение более ограничено, в частности:

 

  • По умолчанию установлено значение «Disabled», поэтому в обычном случае пользователь должен запускать приложение хотя бы один раз - это дает приложению возможность запросить его включение.
  • Когда приложение вызывает RequestEnableAsync, в нем появится диалоговое окно «Пользовательское приглашение» для UWP приложений (или, если Вы вызываете его из компонента UWP в приложении на Desktop Bridge из Windows 10 Fall Creators Update). 
  • StartupTask включает метод Disable. Если состояние «Enabled», приложение может использовать API, чтобы поставить его на «Disabled». Если приложение затем снова запросит включение, это также вызовет приглашение пользователя.
  • Если пользователь отключает (либо через приглашение пользователя, либо через вкладку Startup в Task Manager), то приглашение снова не отображается, независимо от каких-либо запросов приложения. Конечно, приложение может разработать свои собственные пользовательские приглашения, попросив пользователя внести вручную изменения в Task Manager, но если пользователь точно отключил Ваш запуск, необходимо уважать его решение и убрать данные уведомления. В приведенном выше примере кода приложение реагирует на DisabledByUser, открывая свой собственный диалог сообщений - по желанию Вы можете это сделать, но следует подчеркнуть, что существует риск, что пользователю это не понравится.
  • Если функция отключена локальным администратором или политикой группы, то приглашение пользователя не отображается, а запуск не может быть активирован. Существующее перечисление StartupTaskState было расширено с новым значением DisabledByPolicy. Когда приложение увидит DisabledByPolicy, ему следует избегать повторного запроса, чтобы задача была включена, потому что запрос никогда не будет одобрен до тех пор, пока политика не изменится.
  • Платформы, отличные от Desktop, которые не поддерживают задачи запуска, также сообщают об отключенной функции.
Если запрос инициирует приглашение пользователя (только для UWP приложений), сообщение включает DisplayName, указанное в Вашем манифесте. Это приглашение не отображается, если при состояниях DisabledByUser или DisabledByPolicy.

Если Ваше приложение включено для активации при запуске, Вы должны обработать этот случай в Вашем классе приложения, переопределив метод OnActivated. Проверьте IActivatedEventArgs.Kind, чтобы узнать, является ли это ActivationKind.StartupTask, и если да, рассмотрите IActivatedEventArgs в StartupTaskActivatedEventArgs. Из этого, при необходимости, Вы можете получить TaskId. В данном тестовом приложении Microsoft просто передает ActivationKind как строку MainPage.

 

protected override void OnActivated(IActivatedEventArgs args)
{
    Frame rootFrame = Window.Current.Content as Frame;
    if (rootFrame == null)
    {
        rootFrame = new Frame();
        Window.Current.Content = rootFrame;
    }
 
    string payload = string.Empty;
    if (args.Kind == ActivationKind.StartupTask)
    { 
        var startupArgs = args as StartupTaskActivatedEventArgs;
        payload = ActivationKind.StartupTask.ToString();
    }
 
    rootFrame.Navigate(typeof(MainPage), payload);
    Window.Current.Activate();
}

 

Затем переопределение главной страницы OnNavigatedTo проверяет эту входящую строку и использует ее для сообщения статуса в пользовательском интерфейсе.

 

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string payload = e.Parameter as string;
    if (!string.IsNullOrEmpty(payload))
    {
        activationText.Text = payload;
 
        if (payload == "StartupTask")
        {
            requestButton.IsEnabled = false;
            requestResult.Text = "Enabled";
            SolidColorBrush brush = new SolidColorBrush(Colors.Gray);
            requestResult.Foreground = brush;
            requestPrompt.Foreground = brush;
        }
    }
}

 

Обратите внимание, что при запуске приложения, оно запускается на панели задач с минимальным значением. В данном тестовом приложении при входе в обычный оконный режим приложение сообщает ActivationKind и StartupTaskState:

Используя windows.startupTask manifest Extension и StartupTask.RequestEnableAsync API, Ваше приложение может быть настроено для запуска при входе пользователя в систему. Это может быть полезно для приложений, которые пользователь будет использовать на постоянной основе - но эту функцию Вы должны использовать осторожно. Вам не следует использовать эту функцию, если Вы не ожидаете, что пользователь захочет ее использовать для Вашего приложения, и Вам следует избегать многократных уведомлений после того, как пользователь выберет именно Ваше приложение. Включение пользовательского запроса ставит пользователя под Ваше управление, что является улучшением по сравнению с более старой версией Win32.

Пример кода здесь.



Posted on 28. July 2017

Windows Store: трейлеры, улучшенные списки, скидки, и другие возможности

Во время Build 2017, Windows Store команда объявила несколько новых функций. Сегодня мы рассотрим этих возможности. 

 

  • Больше способов продвижения приложений и привлечения пользователей
  1. Создание более привлекательных страниц приложений с помощью видео трейлеров
  2. Быстрое создание и обновление страниц приложений с помощью импорта / экспорта
  • Дополнительные способы управления ценами, скидками и продажами
  1. Установка точной даты и времени, когда Ваше приложение должно быть доступно в Store
  2. Более точный контроль Ваших цен и их изменения
  3. Новые более гибкие варианты ценообразования 
  4. Просмотр всех возможных уровней цен в Excel
  • Эффективное отлаживание Ваших приложений с помощью CAB-файлов
  • Dev Center с современными и улучшенными панелями инструментов

Важная информация: если Ваше приложение находится в процессе сертификации, опубликуйте его (или удалите), и следуящая сертификация будет поддерживать новые возможности ценообразования, скидок и обновлений в Store. Кроме того, если Вы используете Windows Store submission API, обязательно прочитайте информацию внизу этой публикации.

Дополнительные способы продвижения приложений и привлечения пользователей

Видео-трейлеры - один из лучших способов привлечения клиентов. Теперь Вы можете загружать до 15 трейлеров на страницы Ваших приложений. При использовании трейлеров обязательно включите изображение с разрешением 1920 x 1080 пикселей (16: 9) в разделе рекламных изображений, которое появляется после прекращения воспроизведения видео. 

Видео трейлеры в Store - см. их здесь на ПК с Windows 10


Создание и заполнение Store для приложений требовало много действий для одного языка и могло занять несколько часов для заполнения многих других языков. Теперь Вы можете обновлять все содержимое (описание, изображения, ключевые слова и т. д.), Импортируя и экспортируя Ваши списки, сокращая время обновления до нескольких минут.

Экспорт и импорт - Страница заполнения приложения для публикации

 

Больше способов управления ценами и продажами

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

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

Доступность расписания - страница ценообразования и доступности


 

Планируйте изменения цены заранее. Например, измените стартовую цену через месяц после публикации приложения.

Планирование изменения цены - страница ценообразования и доступности


 

Существует множество других опций для настройки продаж, включая использование процентных значений (например, «30% от»), просмотр опций продаж в валюте, которая имеет для Вас смысл, настройка продаж по всему миру или на определенных рынках, предоставление скидок клиентам, из Ваших других приложений (например, «50% скидка, если Вы владеете этой другой игрой»), а также возможность нацелить скидку на сегмент клиентов (например, на тех, кто пока не ничего не приобретал в Store).

Скидки управляют товарами, покупайте и попробуйте!

Настройка продаж - Страница ценообразования и доступности


 

Как понять цены на разных рынках? Теперь Вы можете просматривать все возможные уровни цен в Excel. Перейдите на страницу «Цены и доступность», выберите таблицу просмотра, и вы можете просматривать и экспортировать таблицу в CSV.

Просмотр всех ценовых уровней - Страница ценообразования и доступности


Использование современных и эффективных панелей инструментов в обновленном Dev Center 

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

Редизайн в Dev Center


Отлаживайте Ваши приложения более эффективно с помощью CAB-файлов

Команда Microsoft получила много отзывов о доступе к файлам CAB, с помощью которых можно отлаживать приложения, а также улучшать качество и производительность Ваших приложений и игр. Отчет о работоспособности позволяет определить, какие конфигурации версий ОС и приложений генерируют большинство сбоев, а также предоставляет ссылки на детали сбоя с отдельными CAB-файлами. Эти CAB файлы доступны только для пользователей, выполняющих любые Windows Insider flights of Windows 10 (медленные или быстрые), поэтому не все отказы будут включать в себя вариант загрузки CAB.

 

 

Вовлечение этих изменений при использовании Windows Store submission API

Если Вы используете Windows Store submission API для управления Вашими приложениями и играми, обратите внимание на следующие пункты:

 

  • Если вы управляете ценами с помощью Submission API, Вам нужно использовать новые уровни цен. Для этого вручную обновите приложение или игру, чтобы Вы могли просматривать новые уровни цен, принимать их и затем обновлять свой API код отправки, чтобы использовать эти новые значения уровня цен, которые можно найти в ценовой таблице по ценообразованию, и также на странице доступности в Dev Center, как описано выше.
  • Windows Store submission API не поддерживает все новые листинговые возможности в Store. Вы можете добавлять новые активы с помощью панели инструментов в Dev Center, а API-интерфейс отправки будет обновлен позднее в июле, чтобы Вы могли управлять этими новыми активами с помощью API. Более подробная информация о будущих возможностях API, включая трейлеры и параметры игр, указана в этой статье.
  • Если Вы используете модуль StoreBroker PowerShell для упрощения использования Windows Store submission API, Вы можете продолжать использовать его для управления теми же типами листинговых активов, которыми управляете сегодня. Однако Вы не сможете загружать новые типы активов с помощью StoreBroker, пока команда StoreBroker не опубликует обновление (примерно через несколько недель).

 

Прочитайте пост в этом блоге, чтобы узнать обо всех недавно добавленных функциях в Store и попробовать все доступные сегодня возможности. Если у Вас возникли трудности с поиском или использованием этих функций, обязательно сообщите, используя ссылку обратной связи в Dev Center (вверху справа от панели инструментов).



Posted on 24. July 2017

Новые освещения и PropertySet Interop – XAML и Visual Layer Interop

В предыдушем посте команда пользовательского интерфейса Windows изучала XamlCompositionBrushBase и LoadedImageSurface, чтобы создать пользовательские CompositionBrushes, с помощью которых можно рисовать XAML элементы прямо в Вашей разметке. Сегодня, мы ознакомим Вас с новыми улучшениями, добавленными в XAML и Visual Layer Interop API в Windows 10 Creators Update.

 

В этом посте мы рассмотрим некоторые из этих улучшений Creators Update, а именно новые API:

В Части 1:

 

  • XamlCompositionBrushBase – удобное и простое рисование XAML UIElement с CompositionBrush
  • LoadedImageSurface – легкая загрузка изображений и их использование с помощь Composition API

 

В Части 2: 

 

  • XamlLights – применение освещений в Вашем пользовательском интерфейсе XAML с помощью всего лишь одной строки XAML
  • PointerPositionPropertySet – создание 60 FPS анимаций, используя позицию указателя, из потока пользовательского интерфейса!
  • Включение свойств перевода - оживление элемента пользовательского интерфейса XAML с помощью Composition анимаций

 

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

Осветление интерфейса с XamlLights

Новая великолепная функция в Creators Update - это возможность устанавливать и использовать эффект освещения прямо в XAML с помощью абстрактного класса XamlLight.

Создание XamlLight начинается так же, как и XamlCompositionBrushBase, с помощью метода OnConnected и OnDisconnected (см. Часть 1), но на этой раз источником будет подкласс XamlLight, чтобы создать Ваше собственное уникальное освещение, которое можно использовать прямо в XAML. Microsoft использует это с Reveal эффектом, которые доступен в Creators Update.

Чтобы показать эту возможность в работе, Microsoft разработали демоверсию для создания анимированных GIF, которые показаны выше. Данная демоверсия объединяет все, что Вы уже знаете о XamlCompositionBrushBase и LoadedImageSurface, с добавлением двух XamlLights: HoverLight и AmbientLight.

Начнем с создания AmbientLight: аналогично XamlCompositionBrushBase с помощью метода OnConnected и OnDisconnected. Однако для XamlLight установка свойства CompositionLight подкласса XamlLight.

public class AmbLight : XamlLight
{
    protected override void OnConnected(UIElement newElement)
    {
        Compositor compositor = Window.Current.Compositor;

        // Create AmbientLight and set its properties
        AmbientLight ambientLight = compositor.CreateAmbientLight();
        ambientLight.Color = Colors.White;

        // Associate CompositionLight with XamlLight
        CompositionLight = ambientLight;

        // Add UIElement to the Light's Targets
        AmbLight.AddTargetElement(GetId(), newElement);
    }

    protected override void OnDisconnected(UIElement oldElement)
    {
        // Dispose Light when it is removed from the tree
        AmbLight.RemoveTargetElement(GetId(), oldElement);
        CompositionLight.Dispose();
    }

    protected override string GetId() => typeof(AmbLight).FullName;
}

Охватывающее освещение готово, давайте построим SpotLight XamlLight. Одна из главных задач SpotLight - это следование за указателями пользователя. Для этого можно использовать метод GetPointerPositionPropertySet для ElementCompositionPreview для получения CompositionPropertySet, который можно использовать с помощью Composition ExpressionAnimation (PointerPositionPropertySet более подробно описан в разделе PropertySets ниже).

Вот законченная реализация XamlLight, которая создает это анимированное освещение. Ознакомьтесь с комментариями к коду, чтобы увидеть основные части эффектов, такие как положение покоя и анимированная позиция смещения для создания освещения.

public class HoverLight : XamlLight 
{
    private ExpressionAnimation _lightPositionExpression;
    private Vector3KeyFrameAnimation _offsetAnimation;

    protected override void OnConnected(UIElement targetElement)
    {
        Compositor compositor = Window.Current.Compositor;

        // Create SpotLight and set its properties
        SpotLight spotLight = compositor.CreateSpotLight();
        spotLight.InnerConeAngleInDegrees = 50f;
        spotLight.InnerConeColor = Colors.FloralWhite;
        spotLight.OuterConeAngleInDegrees = 0f;
        spotLight.ConstantAttenuation = 1f;
        spotLight.LinearAttenuation = 0.253f;
        spotLight.QuadraticAttenuation = 0.58f;

        // Associate CompositionLight with XamlLight
        this.CompositionLight = spotLight;

        // Define resting position Animation
        Vector3 restingPosition = new Vector3(200, 200, 400);
        CubicBezierEasingFunction cbEasing = compositor.CreateCubicBezierEasingFunction( new Vector2(0.3f, 0.7f), new Vector2(0.9f, 0.5f));
        _offsetAnimation = compositor.CreateVector3KeyFrameAnimation();
        _offsetAnimation.InsertKeyFrame(1, restingPosition, cbEasing);
        _offsetAnimation.Duration = TimeSpan.FromSeconds(0.5f);

        spotLight.Offset = restingPosition;

        // Define expression animation that relates light's offset to pointer position 
        CompositionPropertySet hoverPosition = ElementCompositionPreview.GetPointerPositionPropertySet(targetElement);
        _lightPositionExpression = compositor.CreateExpressionAnimation("Vector3(hover.Position.X, hover.Position.Y, height)");
        _lightPositionExpression.SetReferenceParameter("hover", hoverPosition);
        _lightPositionExpression.SetScalarParameter("height", 15.0f);

        // Configure pointer entered/ exited events
        targetElement.PointerMoved += TargetElement_PointerMoved;
        targetElement.PointerExited += TargetElement_PointerExited;

        // Add UIElement to the Light's Targets
        HoverLight.AddTargetElement(GetId(), targetElement);
    }

    private void MoveToRestingPosition()
    {
        // Start animation on SpotLight's Offset 
        CompositionLight?.StartAnimation("Offset", _offsetAnimation);
    }

    private void TargetElement_PointerMoved(object sender, PointerRoutedEventArgs e)
    {
        if (CompositionLight == null) return;

        // touch input is still UI thread-bound as of the Creators Update
        if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch)
        {
            Vector2 offset = e.GetCurrentPoint((UIElement)sender).Position.ToVector2();
            (CompositionLight as SpotLight).Offset = new Vector3(offset.X, offset.Y, 15);
        }
        else
        {
            // Get the pointer's current position from the property and bind the SpotLight's X-Y Offset
            CompositionLight.StartAnimation("Offset", _lightPositionExpression);
        }
    }

    private void TargetElement_PointerExited(object sender, PointerRoutedEventArgs e)
    {
        // Move to resting state when pointer leaves targeted UIElement
        MoveToRestingPosition();
    }

    protected override void OnDisconnected(UIElement oldElement)
    {
        // Dispose Light and Composition resources when it is removed from the tree
        HoverLight.RemoveTargetElement(GetId(), oldElement);
        CompositionLight.Dispose();
        _lightPositionExpression.Dispose();
        _offsetAnimation.Dispose();
    }

    protected override string GetId() => typeof(HoverLight).FullName;
}

Теперь, с помощью HoverLight класса, можно добавить оба AmbLight и HoverLight к предыдущему ImageEffectBrush (смотрите ImageEffectBrush в этом посте):
          
<Grid>
            <Grid.Background>
                <brushes:ImageEffectBrush ImageUriString="ms-appx:///Images/Background.png" />
            </Grid.Background>
  
            <Grid.Lights>
                <lights:HoverLight/>
                <lights:AmbLight/>
            </Grid.Lights>
</Grid>


Примечание: Для добавления XamlLight в разметку, Ваша минимальная SDK-версия должна быть установлена в Creators Update, или же Вы можете установить ее в коде после.
Для получения дополнительной информации об использовании XamlLight перейдите сюда; Вы можете изучить документацию Lighting здесь.

Использование CompositionPropertySets

Если Вы хотите использовать преимущества ScrollViewer Offset или Pointer положения X и Y (например, курсор мыши) для выполнения таких действий, как эффекты анимации, Вы можете использовать ElementCompositionPreview для извлечения PropertySets. Это позволяет создавать удивительно бесперебойные 60 FPS анимации, которые не привязаны к потоку пользовательского интерфейса. Эти методы позволяют вам получать преимущества пользовательского взаимодействия для создания анимаций и освещения.

Использование ScrollViewerManipulationPropertySet

Этот PropertySet полезен для анимации таких объектов, как Parallax, Translation и Opacity.

// Gets the manipulation 
CompositionPropertySet scrollViewerManipulationPropertySet = 
    ElementCompositionPreview.GetScrollViewerManipulationPropertySet(MyScrollViewer);

Чтобы ознакомиться с примером, перейдите к посту о Smooth Interaction и Motion, раздел, посвященный использованию ScrollViewerManipulationPropertySet для управления анимацией.

Использование Нового PointerPositionPropertySet

PointerPositionPropertySet - это новая возможность, добавленная в Creators Update. Этот PropertySet полезен для создания анимаций для освещения и наклона. Также как и ScrollViewerManipulationPropertySet, PointerPositionPropertySet обеспечивает быструю, бесперебойную и зависящую от потока анимацию.

Отличный пример - это механизм анимации Fluent Design RevealBrush, где Вы можете увидить эффекты освещения по бокам UIElements. Этот эффект создается CompositionLight, который имеет свойство Offset, анимированное с помощью ExpressionAnimation, используя значения, полученные из PointerPositionPropertySet.

// Useful for creating an ExpressionAnimation
CompositionPropertySet pointerPositionPropertySet = ElementCompositionPreview.GetPointerPositionPropertySet(targetElement);
ExpressionAnimation expressionAnimation = compositor.CreateExpressionAnimation("Vector3(param.Position.X, param.Position.Y, height)");
expressionAnimation.SetReferenceParameter("param", pointerPositionPropertySet);

Чтобы лучше понять, как использовать эти возможности для того, чтобы внедрить анимации в Ваше приложение, давайте ознакомимся с XamlLights и создадим демоверсию, которая использует PointerPositionPropertySet для анимации SpotLight.

Включение свойства перевода - анимация смещения элемента XAML с использованием анимации композиции

Как уже известно, совместное использование ресурсов между Framework Layer и Visual Layer было достаточно сложным до выпуска Creators Update. Данные визуальные свойства разделяются между UIElements и их Visuals поддержкой:

  • Offset
  • Scale
  • Opacity
  • TransformMatrix
  • InsetClip
  • CompositeMode

До выпуска Creators Update, Scale и Offset были особенно сложными, потому что, как упоминалось ранее, UIElement не знал об изменениях значений свойств на hand-out Visual, даже несмотря на то, что hand-out Visual знал об изменениях в UIElement. Следовательно, если Вы изменяли значение свойства смещения или размера Visual Offset, позиция UIElement также изменялась из-за размера страницы, но все предыдущие значения позиции UIElement следовали всем Вашим визуальным значениям.

С выпуском Creators Update это стало намного легче, поскольку теперь Вы можете предотвратить масштабирование Scale и Offset, добавив новое свойство Translation в Ваш элемент посредством объекта ElementCompositionPreview.

ElementCompositionPreview.SetIsTranslationEnabled(Rectangle1, true);

//Now initialize the value of Translation in the PropertySet to zero for first use to avoid timing issues. This ensures that the property is ready for use immediately.

var rect1VisualPropertySet = ElementCompositionPreview.GetElementVisual(Rectangle1).Properties;
rect1VisualPropertySet.InsertVector3("Translation", Vector3.Zero);

Затем анимируйте визуальную функцию Translation, где ранее Вы анимировали свойство Offset.

// Old way, subject to property stomping:
visual.StartAnimation("Offset.Y", animation);
// New way, available in the Creators Update
visual.StartAnimation("Translation.Y", animation);
Анимируя другое свойство из того, которое было затронуто во время пропусков макета, Вы избегаете нежелательного смещения, исходящего из XAML.

В завершении

В прошлых постах были рассмотрены некоторые новые функции XAML и Composition Interop, а также упрощенные основы использования Composition функций в Вашей XAML разметке.  Начиная от рисования Ваших UIElements с помощью CompositionBrushes и применения подсветки, чтобы выровнять анимацию UIThread. Теперь Composition API становится более доступной, чем когда-либо.
В следующем посте мы расскажем о создании удивительных Composition эффектов и об эволюции Fluent Design.





Posted on 20. July 2017

Вызов WinRT Components из процесса Win32 с помощью Desktop Bridge

В этом посте рассмотрим возможность Desktop Bridge: в частности, о перемещение бизнесс-логики на Windows Runtime Components, также известные как WinRT Components. Раньше Windows поддерживала только вызываемую ОС, обусловленную WinRT компонентами из Win32 приложений. Любая попытка вызвать пользовательские (так называемые сторонние) WinRT компоненты не выполнялась, потому что приложение Win32 не имеет идентификатора пакета и, следовательно, не было способа зарегистрировать компонент с системой во время установки или каким-либо образом найти подходящий компонент для выполнения.

Эти ограничения были устранены, так как приложения Win32 на Desktop Bridge могут быть индивидуальны и зарегистрированы в ОС, включая любые Windows Runtime Components, входящие в состав пакета. В Windows 10 Fall Creators Update, Desktop Bridge поддерживает эту функциональность, включая поддержку как для In-Process Servers, так и Out-Of-Process Servers.

Обмен кодами - Чем WinRT Components лучше других параметров

Существует много разных способов совместного использования кода в приложении, поэтому выбранный вами вариант напрямую зависит от ваших сценариев. На профессиональном уровне существует несколько способов, которые связывают UWP и Desktop Bridge:

 

  • DLL - для сценариев, требующих производительности proc кода и не требующих межязыковой совместимости
  • WinRT Components – для межъязыковой совместимости или поддержки внепроцессной активации для надежности
  • .Net library – для сценариев, которые работают в proc, и всех клиентов, управляемыми разработчиками, включая PCL или .Net Standard libraries

 

Создание нового или движущегося кода в Windows Runtime Component позволяет повторно использовать код между процессами AppContainer и Win32 в одном пакете. В то время как вы повторно используете существующие библиотеки DLL в вашем процессе AppContainer, вызывая LoadPackageLibrary, переходя к Windows Runtime Component, вы получаете доступ к повторному использованию из-за лучшей совместимости языков (Native C / C ++, управляемый код с C # & VB и Javascript), а также интеграцию Visual Studio через Все ваши проекты. Кроме того, компоненты WinRT поддерживают модель активации вне процесса, которая обеспечивает надежность для вашего приложения.

Как это работает?

Поскольку приложения на Desktop Bridge имеют манифест, записи регистрации для WinRT Component такие же, как и для UWP приложения, с использованием расширений InProcessServer и OutOfProcessServer. Эти расширения регистрируют ActivatableClassId и его бинарную реализацию с вашим пакетом, поэтому, когда ваше приложение пытается активировать класс, система может его найти.

In-Process Servers

Эта функция позволяет разработчикам легко обмениваться кодами между Win32 и UWP приложениями, запущенными в AppContainer, которые могут быть загружены через In-Proc. Компонент построен таким образом, к примеру: Создайте новый проект WinRT Component в VS и его регистрация в манифесте будет точно такой же, как и для внутренних серверов UWP. Поскольку не требуется никакого изменения схемы манифеста, разработчики могут использовать существующие наборы инструментов в VS2015 или VS2017 для сборки In-Proc серверов, но это может быть выполнено только на устройстве с обновлением Fall Creators Update.
Ниже приведен пример регистрации в процессе для C++ WinRT Component, где CPPSimpleMathWinRT.dll является родной реализацией класса SimpleMath.

<Extension Category="windows.activatableClass.inProcessServer">
  <InProcessServer>
    <Path>CPPSimpleMathWinRT.dll</Path>
    <ActivatableClass ActivatableClassId="SimpleMathWinRT.SimpleMath" ThreadingModel="both" />
  </InProcessServer>
</Extension>
Ниже вы увидите простой пример Winforms Calculator, который использует C++ WinRT Component для его математического движка.

Как это выглядит во время выполнения:

 

Пример с C++/CX WinRT Component: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/WinFormsWinRTComponent 

Пример с C# WinRT Component: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/WinformsManagedWinRTComponent

 

Out-Of-Process servers

Регистрация OOP-сервера для приложения с использованием расширений Desktop Bridge очень знакома разработчикам, которые ранее регистрировали серверы в UWP. Тем не менее, есть нюансы и ограничения, о которых нужно знать. Так как OOP серверы позволяют вам обмениваться кодами между процессами Win32 и AppContainer, существуют ограничения для совместного использования данных между клиентами - это отражается на модели сервера.  Все зависит от потребностей вашего приложения в отношении того, какую модель стимулирования вы должны использовать.

Инстинктивное поведение сервера определяется требованиями символического процесса, независимо от того, вызывается ли процесс NTCompareToken () и работает ли экземпляр сервера правильно. Если они совпадают, то используется существующий экземпляр сервера. Если они разные, то запускается новый экземпляр сервера.

Одно из ключевых требований - идентификация приложения. Приложения в UWP определены в манифесте, а в большинстве UWP приложений, опубликованных в Windows Store, существует только одно приложение. Но на Desktop Bridge у вас может быть несколько. Еще одним ключевым требованием является уровень доверия вызывающего процесса. На Desktop Bridge, пакет объявлен с возможностью runFullTrust, <rescap:Capability Name=”runFullTrust” />, который позволяет одному или нескольким приложениям быть объявлеными с  FullTrust entrypoint, EntryPoint=”Windows.FullTrustApplication”. Приложения, использующие FullTrust entrypoint, могут вызывать любой API, который им нужен. Обычно это основной исполняемый файл Win32 / .Net. 

Microsoft ссылаются на эти приложения как на приложения FullTrust.

Если у вас нет этой точки входа, приложение работает на более низком уровне доверия, называемом Base Trust, и имеет дополнительные ограничения в изолированной среде под названием AppContainer, что характерно для приложения при создании приложения UWP в Visual Studio. Эти разные уровни доверия приводят к различным требованиям к признакам процесса, и в результате - к другому экземпляру сервера. Эта модель называется ActivateAsActivator или AAA. Ниже приведен пример этой регистрации, и вы заметите, что это то же самое, что и для UWP приложения; нет ничего нового для использования этой инстинктивной модели для доступа к серверу из вашего Win32 кода:

 

  
<Extension Category="windows.activatableClass.outOfProcessServer">
  <OutOfProcessServer ServerName="Microsoft.SDKSamples.Kitchen.OvenServer" >
    <Path>Microsoft.SDKSamples.Kitchen.exe</Path>
    <Instancing>singleInstance</Instancing>
    <ActivatableClass ActivatableClassId="Microsoft.SDKSamples.Kitchen.Oven" />
  </OutOfProcessServer>
</Extension>

 

В то время как модель ActivateAsActivator позволяет обмениваться кодами, создание отдельного экземпляра сервера для каждого клиента может быть немного сложнее. Чтобы облегчить процесс, UWP представил концепцию ActivateAsPackage (AAP), которая обеспечивает одинаковое поведение для серверов в пакете. Это отображено в новом атрибуте IdentityType=”activateAsPackage” в элементе <OutOfProcessServer>.

Однако существует ограничение в модели AAP, так как вы должны указать, в какой границе доверия вы хотите запустить сервер. Сервер должен быть зарегистрирован для использования процессами AppContainer или FullTrust. Если вы хотите использовать сервер как в процессах FullTrust, так и в AppContainer, вам нужно будет создать и зарегистрировать два сервера с отдельными именами серверов и именами классов, поскольку эти имена должны быть уникальными для каждого пакета. Чтобы зарегистрировать сервер для использования в процессе FullTrust, был добавлен новый атрибут RunFullTrust=”true”. Если вы хотите, чтобы сервер использовался в ваших AppContainer процессах, пропустите данный атрибут.

Оба новых атрибута находятся в пространстве имен xmlns:uap5=”http://schemas.microsoft.com/appx/manifest/uap/windows10/5”. Ниже приведен пример регистрации, показывающий регистрацию Win32 и UWP серверов:

AAP Регистрация сервера для использования процесса Win32, также известного как FullTrust:

  
<Extension Category="windows.activatableClass.outOfProcessServer">
  <OutOfProcessServer ServerName="Microsoft.SDKSamples.Kitchen.OvenServer" uap5:IdentityType="activateAsPackage" uap5:RunFullTrust="true">
    <Path>Microsoft.SDKSamples.Kitchen.exe</Path>
    <Instancing>singleInstance</Instancing>
    <ActivatableClass ActivatableClassId="Microsoft.SDKSamples.Kitchen.Oven" />
  </OutOfProcessServer>
</Extension>
AAP-регистрация сервера для использования  UWP процессами:

  
<Extension Category="windows.activatableClass.outOfProcessServer">
  <OutOfProcessServer ServerName="Microsoft.SDKSamples.Kitchen.OvenServerUWP" uap5:IdentityType="activateAsPackage">
    <Path>Microsoft.SDKSamples.KitchenUWP.exe</Path>
    <Instancing>singleInstance</Instancing>
    <ActivatableClass ActivatableClassId="Microsoft.SDKSamples.Kitchen.OvenUWP" />
  </OutOfProcessServer>
</Extension>

Образец использует AAP сценарий и показывает два приложения C # Winforms с использованием OOP WinRT Component, в результате чего выполняется только один экземпляр исполняемого файла сервера. WinRT Component представляет собой модифицированную версию образца WRLOutOfProcessWinRTComponent из Universal Windows Samples на github. В этом примере оба клиента вызывают сервер и BakeBread () метод. Из TaskManager можно увидеть, что существует только один экземпляр Сервера.


Ссылка GitHub: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/WinformsOutOfProcessWinRTComponent

Поддержка Visual Studio

В проектах, созданных для этого решения, стоит выделить пару деталей и обходные пути. Прежде всего, Visual Studio в настоящее время не позволяет добавлять ссылки на проекты из проекта WinRT Component в проект Win32 / .Net. Вы можете обойти это, выгрузив проект Win32 / .Net и добавив ссылку на проект прямо в файл проекта, например:

 

<ItemGroup>
  <ProjectReference Include="..\Server\WRLOutOfProcessWinRTComponent_server.vcxproj" />
</ItemGroup>

 

Хотя это добавляет ссылку, вы увидите предупреждение в Visual Studio, поскольку ранее это не поддерживалось. Microsoft продолжает работать с Visual Studio, чтобы улучшать его с каждой новой версией, но пока вы можете игнорировать предупреждение.

Во-вторых, образцы используют UWP JavaScript проект для обработки упаковки приложения. Этот метод отмечен в документе Desktop Bridge Packaging с документацией Visual Studio и работает как разумное решение, до тех пор пока Visual Studio не добавит поддержку. Преимущество этого подхода заключается в том, что вы можете добавить ссылку с вашего компонента WinRT в проект JavaScript, а затем система сборки Visual Studio добавляет соответствующие регистрации для зависимостей пакетов, включая VCLib и .NetNative, а также расширения <InProcessServer>. Visual Studio не поддерживает добавление регистраций <OutOfProcessServer>, поэтому вам нужно будет добавить их в манифест вручную.

Сборка на основе метаданных - никаких Proxy/Stub DLL!

Наконец-то, в примере <OutOfProcessServer> используются приемущества сборки на основе метаданных (Metadata Based Marshaling), которая была представлена в обновлении Windows 10 Anniversary Update (Windows 10 version 1607). Эта функция не привлекла большого внимания, но она позволяет WinRT Component разработчикам не создавать класс proxy / stub, экономя их время и усилия. Это возможно, потому что WinMD развертывается с приложением, и, таким образом, система может идентифицировать и собирать типы кросс-процессов для разработчика. Вы заметите, что код сервера в этом примере не включает прокси-проект и бинарные файлы.

Вывод 

Благодаря Windows Runtime Components и Desktop Bridge разработчики могут сделать еще один шаг на пути к переносу бизнес-логики в UWP. Windows Runtime Components обеспечивают повторное использование кода, которое может работать как с процессами FullTrust, так и с процессами UWP, и они позволяют использовать более широкий межпеременный язык.

Для получения дополнительной информации о Desktop Bridge, перейдите на Windows Dev Center.

 

Ваше приложение уже готово к публикации в Windows Store? Дайте нам знать!



Posted on 8. July 2017

Взаимодействие и Движение с Visual Layer in Windows 10 Creators Update

https://blogs.windows.com/buildingapps/2017/06/27/smooth-interaction-motion-visual-layer-windows-10-creators-update/amp/

API-интерфейс Composition оснащен мощным механизмом анимации, который обеспечивает быстрое движение, выполняемое в отдельном процессе вашего UWP приложения. Это гарантирует постоянство 60 кадров в секунду при запуске вашего приложения на устройстве IoT, а также на игровых девайсах. Это просто и очень быстро! Это необходимая возможность для внедрения Fluent Design System, которая сподвигла Microsoft создавать ощущение кинематографического движения в UWP приложениях.

 

 

API-интерфейсы Composition также предоставляют то, к чему вы, вероятно, никогда не имели доступа раньше: возможность создавать высокопроизводительные, низкоуровневые пользовательские анимации, управляемые манипуляциями, как показано выше. Microsoft хочет, чтобы визуальные эффекты были быстрыми и бесперебойными, чтобы сенсорные взаимодействия были качественными и продуктивными. Перенос визуального изображения с помощью пальца или цифровой ручки должен приводить к тому, что визуальный элемент работает независимо от того, как быстро вы нажимаете и тянете его по дисплею.

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

Быстрая и подвижная анимационная система

Visual Layer поддерживает анимацию как для ключевого кадра, так и для анимации выражений. Если вы раньше работали с анимацией XAML, вы, вероятно, уже знакомы с тем, как работают ключевые кадры. В анимации ключевого кадра вы устанавливаете значения для некоторого свойства, которое со временем хотите изменить, а также необходимо назначить продолжительность для изменения: в приведенном ниже примере начальное значение, среднее значение, а затем конечное значение. Система анимации будет следить за анимацией - другими словами, создавая все значения между теми, которые вы явно указали, на основе выбранной функции. Linear или Cubic Bezier -  система анимации будет использовать это для определения значений при интерполяции.

 

CubicBezierEasingFunction cubicBezier = _compositor.CreateCubicBezierEasingFunction(new Vector2(.17f, .67f), new Vector2(1f, 1f));
ScalarKeyFrameAnimation blurAnimation = _compositor.CreateScalarKeyFrameAnimation();
blurAnimation.InsertKeyFrame(0.0f, 0.0f);
blurAnimation.InsertKeyFrame(0.5f, 100.0f);
blurAnimation.InsertKeyFrame(1.0f, 0.0f);
blurAnimation.Duration = TimeSpan.FromSeconds(4);
blurAnimation.IterationBehavior = AnimationIterationBehavior.Forever;
_brush.StartAnimation("Blur.BlurAmount", blurAnimation);

 

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

 

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

Решающий код, который подключает шестерни для анимации, находится в следующем примере кода, который использует новую Expression Builder Library - компонент с открытым исходным кодом, выпущенный в Creators Update для создания анимаций выражений. Вышеприведенное выражение говорит о том, что анимация должна ссылаться и управляться свойством RotationAngleInDegrees Visual, которое обозначается параметром «previousGear». В следующей строке текущее свойство RotationAngleInDegrees Visual в конечном итоге анимируется на основе значения, указанного в выражении.

 

private void ConfigureGearAnimation(Visual currentGear, Visual previousGear)
{
    // If rotation expression is null then create an expression of a gear rotating the opposite direction

    var _rotateExpression = previousGear.GetReference().RotationAngleInDegrees;

    // Start the animation based on the Rotation Angle in Degrees.
    currentGear.StartAnimation("RotationAngleInDegrees", _rotateExpression);
}

 

Но что если анимация может управляться другой анимацией, вам может быть интересно, не могли бы вы также задействовать анимацию с чем-то более конкретным, как пользовательский ввод? Да, Это возможно!

Великолепие ScrollViewer ManipulationPropertySet

Управлять анимацией из ScrollViewer с помощью XAML-Composition interop довольно просто. При наличие всего несколько строк кода, вы можете улучшить визуализацию существующего элемента управления ScrollViewer с помощью CompositionAnimation, используя метод GetScrollViewerManipulationPropertySet в классе ElementCompositionPreview. Используя выражение анимации, вы можете привязать свою анимацию к позиции вашего компонента ScrollViewer.

 

Вы бы использовали эту технику, если бы захотели добавить эффект смещения в ваш XAML или создать "липкий" заголовок, который остается на месте, когда содержимое прокручивается под ним. В демонстрационном примере, показанном ниже (исходный код), ScrollViewer используется даже для управления эффектом смещения в ListView.

 

Добавление смещения на страницу XAML может быть выполнено с помощью нескольких строк.

 

// Note: We're not using the ScrollViewer's offset values directly. Instead, we use this PropertySet which holds the position values of the ScrollViewer in real-time.
var scrollPropSet = _scrollProperties.GetSpecializedReference();
var startOffset = ExpressionValues.Constant.CreateConstantScalar("startOffset", 0.0f);
var parallaxValue = 0.5f;
var itemHeight = 0.0f;
var parallax = (scrollPropSet.Translation.Y + startOffset - (0.5f * itemHeight));
_parallaxExpression = parallax * parallaxValue - parallax;
_parallaxExpression.SetScalarParameter("StartOffset", (float)args.ItemIndex * visual.Size.Y / 4.0f);
visual.StartAnimation("Offset.Y", _parallaxExpression);

 

 

Еще больше красоты в InteractionTracker

Управление анимацией выражений с помощью ScrollViewer чрезвычайно мощное, но что делать, если вы хотите управлять анимацией с помощью сенсорных жестов, которые не ограничиваются жестом панорамирования / увеличения? Кроме того, при использовании манипуляций ScrollViewer ваши анимации связаны с реагированием на поток пользовательского интерфейса и могут потерять это ощущение, когда поток пользовательского интерфейса увязнет.

Что делать, если вы хотите потянуть предметы к себе пальцем, как в демонстрационной версии ниже (исходный код), или анимировать несколько летящих изображений по экрану и на экране, как это происходит в демо в верхней части этой публикации (исходный код)?

 

Чтобы достичь этих эффектов, вы должны использовать новые классы InteractionTracker и VisualInteractionSource. InteractionTracker - это конечный инструмент, который может управляться активным входом. InteractionTracker также поддерживает ряд свойств, таких как Position и ScalePosition, как часть поддержания состояния. Это то, что вы подключаете к анимации. С другой стороны, класс VisualInteractionSource определяет, какой вход вы будете использовать для вождения вашего InteractionTracker, а также когда начинаете обработку ввода (в частности сенсорное).

 

Следующий пример кода демонстрирует базовую реализацию InteractionTracker. ViewportVisual - это обычная поддержка Visual для корневого элемента на странице. Вы используете ее как VisualInteractionSource для трекера. При этом вы указываете, что отслеживаете манипуляции X и Y. Вы также указываете, что хотите отслеживать инерционное движение.

 

_tracker = InteractionTracker.Create(_compositor);

var interactionSource = VisualInteractionSource.Create(viewportVisual);

interactionSource.PositionXSourceMode = InteractionSourceMode.EnabledWithInertia;
interactionSource.PositionYSourceMode = InteractionSourceMode.EnabledWithInertia;

_tracker.InteractionSources.Add(interactionSource);

 

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

 

ar positionExpression = _compositor.CreateExpressionAnimation("-tracker.Position");
positionExpression.SetReferenceParameter("tracker", _tracker);

contentVisual.StartAnimation("Offset", positionExpression);

 

Этот код использует позицию InteractionTracker для создания бесперебойной анимации для смещения Visual. Вы также можете включить анимацию Blur и Opacity для других визуальных эффектов. Это приведет к тому, что все три анимации будут работать вместе, со значениями, основанными на том, как далеко пользователь перетащит палец, чтобы получить удивительно подвижный визуальный эффект. Запустите демо-версию и попробуйте (исходный код).

Это основы управления любой анимацией с любого входа. Все действия будут зависеть от вас.

В завершение

Экспрессионные анимации и взаимодействия с визуальным слоем - это темы, которые быстро набирают спрос. Для подробного ознакомления, мы рекомендуем следующие видеоролики и статьи: