Если вы интересовались разработкой приложений в 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-совместимом устройстве;
- 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) зарегистрировать себя, вызвав DataTransferMnager;
2) вызвать ShowShareUI;
3) подготовить данные к передаче.
Перейдём к расширениям.
Расширения:
- 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 установить бесплатные средства разработки.
Автор: stasus