Разработка и реализация приложения для Windows Store
Контракты приложения
Еще одной возможностью интеграции приложения с платформой Windows 8 является использование контрактов. Контракты представляют собой соглашение между Windows 8 и одним или несколькими приложениями для Windows Store.
Для каждого из возможных вариантов интеграции приложения с платформой существует свои контракт. Например, Windows 8 позволяет обмениваться данными между приложениями. Приложение, которое является источником таких данных, поддерживает для этого соответствующий контракт и должно удовлетворять его требованиям. Аналогично для приложений, которые являются потребителями таких данных. Они должны быть интегрированы с соответствующим контактом, который позволит им получать данные.
Когда приложение использует контракты такого рода, они обязательно должны быть указаны в списке возможностей. В текущей версии платформы мы можем использовать следующие контракты:
- Settings
- Search;
- Sharing;
- Play To;
- App to App Picking.
В этой лекции рассмотрим первые три.
Настройки приложения (Settings)
При использовании этого типа контакта приложение может размещать свои элементы в системной панели настроек (Рис. 9.10).
Панель настроек можно отобразить, используя возможности платформы или из приложения. Для открытия панели из приложения необходимо вызвать статический метод Show() класса Windows.UI.ApplicationSettings.SettingsPane.
Для добавления элементов списка в системную панель настроек и выполнения необходимой логики по его нажатию необходимо выполнить следующие действия:
var settingsPane = Windows.UI.ApplicationSettings.SettingsPane .GetForCurrentView(); settingsPane.CommandsRequested += settingsPane_CommandsRequested; void settingsPane_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args) { args.Request.ApplicationCommands.Add(new SettingsCommand("SomeId", "Log Out", (handler)=> { })); }
Метод GetForCurrentView возвращает объект типа SettingsPane, который, в свою очередь, позволяет подписаться на событие CommandsRequested и в обработчике события добавить необходимые команды в системную панель настроек. При добавлении элементов списка в эту панель необходимо создать объект класса SettingsCommand и указать в конструкторе идентификатор элемента, текстовую строку для отображения в интерфейсе и делегат, который будет обрабатывать нажатия этого элемента списка.
Элементы, созданные в панели настроек, будут находиться на ней, только когда пользователь работает с приложением.
Интеграция с поиском
Интеграция с поиском позволяет приложению взаимодействовать с системной панелью поиска. Таким образом, пользователь может использовать один и тот же интерфейс для поиска контента как в операционной системе Windows 8, так и внутри приложений. Кроме того, пользователь может использовать один и тот же поисковый запрос между различными приложениями и выполнять поиск внутри приложения из любого места.
Используя данный тип контракта, мы соглашаемся с тем, что контент приложения доступен для механизма поиска платформы. Перед использованием этого контракта следует указать в манифесте, что приложение его использует (Рис. 9.11).
Дальнейшая интеграция с поиском происходит через объект класса Windows. ApplicationModel.Search.SearchPane. Чтобы получить к нему доступ, следует вызвать статический метод GetForCurrentView() этого же класса. Ключевые события этого класса:
- QuerySubmitted - уведомляет о том, что приложению следует выполнить поиск по указанному поисковому запросу от пользователя;
- SuggestionsRequested - позволяет приложению предоставить на выбор пользователя список подсказок для запроса;
- VisibilityChanged - уведомляет об открытии/закрытии панели поиска.
Совместное использование данных (Sharing)
Возможность совместного использования данных позволяет пользователям работать с несколькими приложениями или службами одновременно. При использовании этого контракта не нужно писать дополнительный код или руководство для других разработчиков только для того, чтобы реализовать механизм совместного использования данных.
Во время работы с этим видом контракта различают два вида приложений:
- приложения, которые является источниками данных и отдают их в различных форматах;
- приложения, которые используют данные совместно.
Начнем с механизма, который позволяет предоставлять данные для других приложений/сервисов.
В основе механизма обмена данными лежит объект класса Windows. ApplicationModel.DataTransfer.DataTransferManager. Доступ к нему можно получить, вызвав статический метод GetForCurrentView() этого же класса:
datatransferManager = DataTransferManager.GetForCurrentView(); datatransferManager.DataRequested += new TypedEventHandler <DataTransferManager, DataRequestedEventArgs>(this.DataRequested);
В обработчике события DataRequested можно указать данные, которые необходимо предоставить другим приложениям. Пример:
void DataRequested(DataTransferManager sender, DataRequestedEventArgs e) { e.Request.Data.Properties.Title = this.dataPackageTitle; e.Request.Data.Properties.Description = this.dataPackageDescription; if (this.dataPackageThumbnail != null) { e.Request.Data.Properties.Thumbnail = this.dataPackageThumbnail; } e.Request.Data.SetText(this.dataPackageText); }
Через свойство Properties можно указать описание данных для совместного использования.
Для приложения, которое использует совместные данные, необходимо переопределить метод OnShareTargetActivated класса Application и через параметры получить доступ к совместным данным:
protected override async void OnShareTargetActivated (ShareTargetActivatedEventArgs args) { if (args.Kind == Windows.ApplicationModel. Activation.ActivationKind.ShareTarget) { var text = await args.ShareOperation.Data. GetTextAsync() } }
Кроме текста, приложения могут обмениваться файлами, изображениями, контентом html и др. Можно определять свой собственный формат и передавать его другим приложениям. При этом важно, чтобы приложение-потребитель знало формат принимаемых данных.
Краткие итоги
Рассмотрены вопросы использования системы навигации WinRT-приложения. Приведены структуры иерархической и плоской систем навигации. Описано назначение и способы работы с панелью навигации WinRT-приложения. Определены особенности WinRT при работе с файлами при разработке WinRT-приложения.
Вопросы
- В чем суть иерархической системы навигации?
- В чем суть плоской системы навигации?
- Какова структура иерархической навигации?
- Для чего нужна панель навигации?
- Какова структура навигации между разделами в приложении?
- Как используется панель приложения?
- В чем состоит особенность WinRT при работе с файлами и данными?
- Какие типа файлового хранилища есть у WinRT-приложения?
- В чем особенности файловой системы WinRT-приложения?