Закрепление приложения на панели задачPin your app to the taskbar

Вы можете программно закрепить приложение на панели задач так же, как приложение в меню "Пуск".You can programmatically pin your own app to the taskbar, just like you can pin your app to the Start menu. Вы также можете проверить, закреплено ли приложение в данный момент и допускает ли панель задач закрепление.And you can check whether your app is currently pinned, and whether the taskbar allows pinning.

Снимок экрана: панель задач Windows 10, показывающая приложение, закрепленное там.

Важно!

Требуется обновление Fall Creators Update. Обратите внимание, что для использования API панели задач необходим пакет SDK 16299 и сборка 16299 или более поздней версии.Requires Fall Creators Update: You must target SDK 16299 and be running build 16299 or higher to use the taskbar APIs.

Важные API-интерфейсы: класс TaskbarManagerImportant APIs: TaskbarManager class

Когда следует попросить пользователя закрепить приложение на панели задач?When should you ask the user to pin your app to the taskbar?

Класс TaskbarManager позволяет попросить пользователя закрепить приложение на панели задач, при этом пользователь должен утвердить запрос.The TaskbarManager class lets you ask the user to pin your app to the taskbar; the user must approve the request. Вы приложили много усилий для проектирования удобного приложения, и теперь вы можете попросить пользователя закрепить его на панели задач.You put a lot of effort into building a stellar app, and now you have the opportunity to ask the user to pin it to taskbar. Но прежде чем перейти в код, при создании интерфейса необходимо иметь в виду следующие факторы.But before we dive into the code, here are some things to keep in mind as you are designing your experience:

  • Проектируйте плавные и легко исчезающие элементы в приложении с помощью четкого вызова действия "Закрепить на панели задач".Do craft a non-disruptive and easily dismissible UX in your app with a clear "Pin to taskbar" call to action. Не используйте диалоговые окна и всплывающие элементы для этой цели.Avoid using dialogs and flyouts for this purpose.
  • Ясно опишите значение приложения, перед тем как просить пользователя закрепить его.Do clearly explain the value of your app before asking the user to pin it.
  • Не просите пользователя закрепить приложение, если плитка уже закреплена или устройство не поддерживает ее.Don't ask a user to pin your app if the tile is already pinned or the device doesn’t support it. (В этой статье объясняется, как определить, поддерживается ли закрепление.)(This article explains how to determine whether pinning is supported.)
  • Не просите пользователей много раз закрепить ваше приложение (им, скорее всего, это не понравится).Don't repeatedly ask the user to pin your app (they will probably get annoyed).
  • Не вызывайте API закрепления без явного взаимодействия с пользователем или при сворачивании либо неоткрытии приложения.Don't call the pin API without explicit user interaction or when your app is minimized/not open.

1. Проверьте, существует ли требуемые API.1. Check whether the required APIs exist

Если ваше приложение поддерживает более ранние версии Windows 10, необходимо проверить, доступен ли класс TaskbarManager.If your app supports older versions of Windows 10, you need to check whether the TaskbarManager class is available. Вы можете использовать метод ApiInformation.IsTypePresent для этой проверки.You can use the ApiInformation.IsTypePresent method to perform this check. Если класс TaskbarManager недоступен, исключите любые вызовы API.If the TaskbarManager class isn't available, avoid executing any calls to the APIs.

if (ApiInformation.IsTypePresent("Windows.UI.Shell.TaskbarManager"))
{
    // Taskbar APIs exist!
}

else
{
    // Older version of Windows, no taskbar APIs
}

2. Проверьте, присутствует ли панель задач и допускает ли она закрепление.2. Check whether taskbar is present and allows pinning

Приложения Windows могут работать на различных устройствах. не все из них поддерживают панель задач.Windows apps can run on a wide variety of devices; not all of them support the taskbar. Сейчас ее поддерживают только настольные компьютеры.Right now, only Desktop devices support the taskbar.

Даже если панель задач доступна, групповая политика на компьютере пользователя может запрещать закрепление элементов на панели задач.Even if the taskbar is available, a group policy on the user's machine might disable taskbar pinning. Поэтому прежде чем пытаться закрепить приложение, необходимо проверить, поддерживается ли закрепление на панели задач.So, before you attempt to pin your app, you need to check whether pinning to the taskbar is supported. Свойство TaskbarManager.IsPinningAllowed возвращает значение true, если панель задач присутствует и разрешает закрепление элементов.The TaskbarManager.IsPinningAllowed property returns true if the taskbar is present and allows pinning.

// Check if taskbar allows pinning (Group Policy can disable it, or some device families don't have taskbar)
bool isPinningAllowed = TaskbarManager.GetDefault().IsPinningAllowed;

Примечание

Если вы не собираетесь закреплять приложение на панели задач и просто хотите узнать, доступна ли панель задач, используйте свойство TaskbarManager.IsSupported.If you don't want to pin your app to the taskbar and just want to find out whether the taskbar is available, use the TaskbarManager.IsSupported property.

3. Проверьте, не закреплено ли ваше приложение на панели задач в данный момент.3. Check whether your app is currently pinned to the taskbar

Очевидно, что нет смысла просить пользователя закрепить приложение на панели задач, если оно уже закреплено.Obviously, there's no point in asking the user to let you pin the app to the taskbar if it's already pinned there. Вы можете использовать метод TaskbarManager.IsCurrentAppPinnedAsync, чтобы проверить, закреплено ли приложение, перед тем как обращаться к пользователю.You can use the TaskbarManager.IsCurrentAppPinnedAsync method to check whether the app is already pinned before asking the user.

// Check whether your app is currently pinned
bool isPinned = await TaskbarManager.GetDefault().IsCurrentAppPinnedAsync();

if (isPinned)
{
    // The app is already pinned--no point in asking to pin it again!
}
else 
{
    //The app is not pinned. 
}

4. Закрепите ваше приложение.4. Pin your app

Если панель задач присутствует, закрепление разрешено и приложение в настоящее время не закреплено, вы можете показать подсказку, чтобы сообщить пользователям, что они могут закрепить ваше приложение.If the taskbar is present and pinning is allowed and your app currently isn't pinned, you might want to show a subtle tip to let users know that they can pin your app. Например, можно отобразить значок закрепления в интерфейсе, который пользователь может щелкнуть.For example, you might show a pin icon somewhere in your UI that the user can click.

Если пользователь щелкнет элемент закрепления в интерфейсе, вы вызовите метод TaskbarManager.RequestPinCurrentAppAsync.If the user clicks your pin suggestion UI, you would then call the TaskbarManager.RequestPinCurrentAppAsync method. После этого появится диалоговое окно, где пользователю будет предложено подтвердить закрепление приложения на панели задач.This method displays a dialog that asks the user to confirm that they want your app pinned to the taskbar.

Важно!

Метод необходимо вызывать из потока пользовательского интерфейса переднего плана, в противном случае будет вызвано исключение.This must be called from a foreground UI thread, otherwise an exception will be thrown.

// Request to be pinned to the taskbar
bool isPinned = await TaskbarManager.GetDefault().RequestPinCurrentAppAsync();

Диалоговое окно закрепления

Этот метод возвращает логическое значение, которое указывает, закреплено ли теперь приложение на панели задач.This method returns a boolean value that indicates whether your app is now pinned to the taskbar. Если приложение уже было закреплено, метод возвращает значение true без отображения диалогового окна для пользователя.If your app was already pinned, the method immediately returns true without showing the dialog to the user. Если пользователь нажмет кнопку "Нет" в диалоговом окне или закрепление приложения на панели задач не поддерживается, метод возвращает значение false.If the user clicks "no" on the dialog, or pinning your app to the taskbar isn't allowed, the method returns false. В противном случае, пользователь нажал кнопку "Да" и приложение было закреплено, API вернет значение true.Otherwise, the user clicked yes and the app was pinned, and the API will return true.

РесурсыResources