Если вы интересовались разработкой приложений в 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.
Cached File Updater – возможность управлять кэширование удалённого контента локальным приложением, а также обновлением локально изменённого закэшированого контента на удалённый сервер;
Как реализовать поддержку кеширование с обновлением: 1) определить в манифесте; 2) зарегистрироваться на событие FileUpdateRequested; 3) обрабатывать запросы на обновление файлов; 4) требует поддержки со стороны удалённого сервера.
Play To – реализация проигрывания контента вашего приложение на присоединённом DLNA-совместимом устройстве;
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 получения
Account Picture Provider – ваше приложение будет указано в списке предоставляющих картинку в контрольной панели
Как реализовать Account Picture Provider: 1) добавить запись в манифест; 2) в обработчике OnActivated, отработать активацию по протоколу со схемой ms-accountpictureprovider; 3) отобразить интерфейс выбора; 4) установить выбранную картинку через UserInformation.SetAccountPicturesAsync.
Camera Settings – приложение может предоставлять специальный интерфейс для настройки камеры и эффектов, при фотографировании и снятии видео
Как реализовать контракт Camera Settings: 1) добавить определение в манифест; 2) в обработчике OnActivated приложения, отработать активацию по типу ActivationKind.CameraSettings; 3) реализовать необходимые настройки.
Contact Picker – приложение будет показываться в списке приложений, которые отображаются при выборе контактов
Как реализовать Contact Picker: 1) внести определение в манифест; 2) в обработчике OnActivated отработать тип активации ActivationKind.ContactPicker; 3) использовать ContactPickerUI для отображения списка контактов.
Game Explorer – чтобы зарегистрировать программу в системе, как игру, разработчику необходимо «поддержать» это расширение и создать Game Definition File. Подробнее процесс описан по ссылке Создание GDF файла
Print Task Settings – программа может предоставлять расширенные возможности по настройке задачи печати
Как реализовать расширение Print Task Settings: 1) добавить определение в манифест; 2) обработать событие OnActivated с типом ActivationKind.PrintTaskSettings.
Protocol Activation – возможность зарегистрировать протокол и/или обработчик к нему
Как реализовать расширение Protocol Activation: 1) добавить определение в манифест; 2) обработать событие OnActivated для типа ActivationKind.Protocol.
SSL/Certificate – это расширение позволяет вам устанавливать цифровые сертификаты вместе с вашим приложением. Для этого надо добавить соответствующие настройки и сертификат в манифест.
Если хотите попробовать реализовать какой-нибудь контракт или расширение прямо сейчас, то чтобы начать разрабатывать приложения под Windows 8 нужно на Windows 8 установить бесплатные средства разработки.