Контракты и расширения Windows 8
stasus

Если вы интересовались разработкой приложений в metro-стиле под Windows 8, вы, наверное, уже знаете, что жизненный цикл этих приложений ближе к жизненному циклу приложений на Windows Phone. Это означает, что приложение, фактически не исполняется, когда пользователь его не видит. Таким образом, возникает вопрос, как приложения могут взаимодействовать друг с другом и системой.
В Windows 8 для приложений в metro-стиле для взаимодействия приложений друг с другом используются контракты, а для взаимодействия с системой - расширения.
Разнообразных контрактов и расширений достаточно много. Написать пост про то, какие контракты и расширения доступны разработчику, меня натолкнула статья Windows 8. Контракт "поиск" в деталях, после которой я решил систематизировать свои знания и собрать в одном месте краткие, буквально в несколько строчек, "how to" по большинству контрактов и расширений, с примерами из Windows SDK Samples.
Итак, приступим. Начнём с контрактов.
Контракты:
- App to App Picking - возможность одному приложению напрямую выбрать файлы, которые предоставляет другое приложение;
Как реализовать File Open Picker Contract: 1) добавить в проект элемент File Open Picket Contract (Add Item); 2) обрабатывать FileOpenPickerActivated; 3) использовать FileOpenPickerUI.
Как реализовать File Save Picker Contract: 1) определить в манифесте; 2) обрабатывать FileSavePickerActivated; 3) использовать FileSavePickerUI.
Пример приложения в которое реализует File Open и File Save Picker контракты
- Cached File Updater - возможность управлять кэширование удалённого контента локальным приложением, а также обновлением локально изменённого закэшированого контента на удалённый сервер;
Как реализовать поддержку кеширование с обновлением: 1) определить в манифесте; 2) зарегистрироваться на событие FileUpdateRequested; 3) обрабатывать запросы на обновление файлов; 4) требует поддержки со стороны удалённого сервера.
- Play To - реализация проигрывания контента вашего приложение на присоединённом DLNA-совместимом устройстве;
Пример приложения, реализующего контракт Play To
- Search - возможность интегрироваться со стандартным интерфейсом поиска;
Как реализовать контракт поиска: 1) добавить элемент Search Contract в проект (Add Item); 2) реализовать страницу результатов поиска.
Пример приложения, реализующего контракт поиска Windows 8. Контракт "поиск" в деталях
- Settings - возможность предоставить доступ пользователю к контекстно-зависимые настройкам в стандартном системном метро-представлении;
Как реализовать контракт Settings: 1) определить в манифесте; 2) подписаться на событие CommandRequested объекта SettingsPaneView; 3) зарегистрировать свои команды; 3) реализовать обработчик(и) команд.
Пример приложения, с использованием интеграции настроек
- Share - простой способ предоставить или получить контент вашего приложения другому приложению или сервису.
Можно отдавать/получать: текст, URI, Bitmap, HTML, RTF и StorageItems
Как сделать Share Target: 1) добавить элемент "Share Target Contract" в проект (Add Item); 2) добавить декларацию в манифест; 3) реализовать UI получения
Приложение, пример реализации целевого приложения для Share
Как сделать Share Source: 1) зарегистрировать себя, вызвав DataTransferManager; 2) вызвать ShowShareUI; 3) подготовить данные к передаче.
Приложение, пример реализации источников данных для Share. Перейдём к расширениям.
Расширения:
- Account Picture Provider - ваше приложение будет указано в списке предоставляющих картинку в контрольной панели
Как реализовать Account Picture Provider: 1) добавить запись в манифест; 2) в обработчике OnActivated, отработать активацию по протоколу со схемой ms-accountpictureprovider; 3) отобразить интерфейс выбора; 4) установить выбранную картинку через UserInformation.SetAccountPicturesAsync.
Пример работы с данными аккаунта пользователя, включая его аватар
- AutoPlay - ваше приложение будет указано в списке приложения для автоматического проигрывания при присоединении устройств к компьютеру
Как реализовать AutoPlay 1) добавить в манифест AutoPlay Content и/или AutoPlay Device; 2) реализовать обработку OnFileActivated.
Пример работы с Removable Storage с реализацией поддержки AutoPlay
- Background Tasks - используется приложением для запуска части кода приложения, когда оно не исполняется
Как реализовать Background Tasks 1) добавить определение в манифест; 2) собстсвенно реализовать, в зависимости от типа задачи.
Тема фоновых задач более комплексная, чем большинство остальных, я её планирую рассмотреть подробно в следующих статьях.
Пример с основами работы с фоновыми задачами Пример фоновой задачи, запускающейся при приходе SMS Фоновая задача отразабывающая доступность сети Фоновая задача, обрабатывающая Raw оповещения
- Camera Settings - приложение может предоставлять специальный интерфейс для настройки камеры и эффектов, при фотографировании и снятии видео
Как реализовать контракт Camera Settings: 1) добавить определение в манифест; 2) в обработчике OnActivated приложения, отработать активацию по типу ActivationKind.CameraSettings; 3) реализовать необходимые настройки.
Пример приложения для камеры и реализующего расширение Camera Settings Подробное руководство по разработке приложений, работающих с камерой
- Contact Picker - приложение будет показываться в списке приложений, которые отображаются при выборе контактов
Как реализовать Contact Picker: 1) внести определение в манифест; 2) в обработчике OnActivated отработать тип активации ActivationKind.ContactPicker; 3) использовать ContactPickerUI для отображения списка контактов.
Пример приложения, реализующего расширение Contact Picker
- File Activation - возможность зарегистрировать приложение, как обработчик файлов определённого типа с определённым расширением
Как реализовать расширение File Activation: 1) добавить определение в манифест; 2) обработать событие OnFileActivated.
Пример приложения реализующего расширения File и Protocol Activation
- Game Explorer - чтобы зарегистрировать программу в системе, как игру, разработчику необходимо "поддержать" это расширение и создать Game Definition File. Подробнее процесс описан по ссылке Создание GDF файла
- Print Task Settings - программа может предоставлять расширенные возможности по настройке задачи печати
Как реализовать расширение Print Task Settings: 1) добавить определение в манифест; 2) обработать событие OnActivated с типом ActivationKind.PrintTaskSettings.
Пример приложения с реализованным расширением Print Task Settings Подробное руководство по разработке приложений, работающих с принтером
- Protocol Activation - возможность зарегистрировать протокол и/или обработчик к нему
Как реализовать расширение Protocol Activation: 1) добавить определение в манифест; 2) обработать событие OnActivated для типа ActivationKind.Protocol.
Пример приложения реализующего расширения File и Protocol Activation
- SSL/Certificate - это расширение позволяет вам устанавливать цифровые сертификаты вместе с вашим приложением. Для этого надо добавить соответствующие настройки и сертификат в манифест.
Если хотите попробовать реализовать какой-нибудь контракт или расширение прямо сейчас, то чтобы начать разрабатывать приложения под Windows 8 нужно наWindows 8 установить бесплатные средства разработки
|