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

в 9:01, , рубрики: contracts, Extensions, windows, Windows 8, Блог компании Microsoft, контракты, разработка, расширения, метки: , , , ,

Контракты и расширения Windows 8Если вы интересовались разработкой приложений в 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) зарегистрировать себя, вызвав DataTransferMnager;
    2) вызвать ShowShareUI;
    3) подготовить данные к передаче.

    Приложение, пример реализации источников данных для Share.

Перейдём к расширениям.

Расширения:

Если хотите попробовать реализовать какой-нибудь контракт или расширение прямо сейчас, то чтобы начать разрабатывать приложения под Windows 8 нужно на Windows 8 установить бесплатные средства разработки.

Автор: stasus

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js