Поделиться через


Закрепление вспомогательных плиток на панели задач

Примечание.

Плитки жизни — это функция Windows 10, которая не поддерживается в более поздних версиях Windows. Для новых приложений рекомендуется следовать текущим рекомендациям по значкам приложений.

Как и закрепление вторичных плиток на начальном экране, вы можете закрепить вторичные плитки на панели задач, предоставив пользователям быстрый доступ к содержимому в приложении.

Закрепление панели задач

Внимание

API ограниченного доступа: этот API является функцией ограниченного доступа. Чтобы использовать этот API, обратитесь к taskbarsecondarytile@microsoft.comней.

Требуется обновление за октябрь 2018 г. Необходимо установить целевой пакет SDK 17763 и запустить сборку 17763 или более поздней версии, чтобы закрепить на панели задач.

Руководство

Вторичная плитка обеспечивает согласованный и эффективный способ прямого доступа пользователей к определенным областям в приложении. Хотя пользователь выбирает, следует ли закреплять вторичную плитку на панели задач, закрепленные области в приложении определяются разработчиком. Дополнительные сведения см . в руководстве по дополнительным плиткам.

1. Определите, существует ли API и разблокируйте ограниченный доступ

Старые устройства не имеют API-интерфейсы закрепления панели задач (если вы используете более старые версии Windows 10). Таким образом, на этих устройствах не следует отображать кнопку закрепления.

Кроме того, эта функция заблокирована в разделе "Ограниченный доступ". Чтобы получить доступ, обратитесь в корпорацию Майкрософт. Вызовы API к TaskbarManager.RequestPinSecondaryTileAsync, TaskbarManager.IsSecondaryTilePinnedAsync и TaskbarManager.TryUnpinSecondaryTileAsync завершаются ошибкой с исключением, запрещенным доступом. Приложения не могут использовать этот API без разрешения, и определение API может изменяться в любое время.

Используйте метод ApiInformation.IsMethodPresent, чтобы определить, присутствуют ли API. А затем используйте API LimitedAccessFeatures , чтобы попытаться разблокировать API.

if (ApiInformation.IsMethodPresent("Windows.UI.Shell.TaskbarManager", "RequestPinSecondaryTileAsync"))
{
    // API present!
    // Unlock the pin to taskbar feature
    var result = LimitedAccessFeatures.TryUnlockFeature(
        "com.microsoft.windows.secondarytilemanagement",
        "<tokenFromMicrosoft>",
        "<publisher> has registered their use of com.microsoft.windows.secondarytilemanagement with Microsoft and agrees to the terms of use.");

    // If unlock succeeded
    if ((result.Status == LimitedAccessFeatureStatus.Available) ||
        (result.Status == LimitedAccessFeatureStatus.AvailableWithoutToken))
    {
        // Continue
    }
    else
    {
        // Don't show pin to taskbar button or call any of the below APIs
    }
}

else
{
    // Don't show pin to taskbar button or call any of the below APIs
}

2. Получение экземпляра TaskbarManager

Приложения Windows могут работать на различных устройствах; не все они поддерживают панель задач. Сейчас только настольные устройства поддерживают панель задач. Кроме того, может появиться и пойти наличие панели задач. Чтобы проверить, присутствует ли панель задач, вызовите метод TaskbarManager.GetDefault и убедитесь, что возвращенный экземпляр не имеет значения NULL. Не отображайте кнопку закрепления, если панель задач отсутствует.

Мы рекомендуем держаться на экземпляре в течение одной операции, например закрепление, а затем захват нового экземпляра при следующем выполнении другой операции.

TaskbarManager taskbarManager = TaskbarManager.GetDefault();

if (taskbarManager != null)
{
    // Continue
}
else
{
    // Taskbar not present, don't display a pin button
}

3. Проверьте, закреплена ли плитка на панели задач

Если плитка уже закреплена, вместо этого следует отобразить кнопку открепления. Вы можете использовать метод IsSecondaryTilePinnedAsync , чтобы проверить, закреплена ли плитка в данный момент (пользователи могут открепить ее в любое время). В этом методе вы передаете TileId плитку, которую вы хотите знать, закреплены.

if (await taskbarManager.IsSecondaryTilePinnedAsync("myTileId"))
{
    // The tile is already pinned. Display the unpin button.
}

else 
{
    // The tile is not pinned. Display the pin button.
}

4. Проверьте, разрешено ли закрепление

Закрепление на панели задач может быть отключено групповой политикой. Свойство TaskbarManager.IsPinningAllowed позволяет проверить, разрешено ли закрепление.

Когда пользователь нажимает кнопку пин-кода, необходимо проверить это свойство и, если это значение false, вы должны отобразить диалоговое окно сообщения, информирующее пользователя о том, что закрепление не разрешено на этом компьютере.

TaskbarManager taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager == null)
{
    // Display message dialog informing user that taskbar is no longer present, and then hide the button
}

else if (taskbarManager.IsPinningAllowed == false)
{
    // Display message dialog informing user pinning is not allowed on this machine
}

else
{
    // Continue pinning
}

5. Создание и закрепление плитки

Пользователь щелкнул кнопку "Закрепить", и вы определили, что API-интерфейсы присутствуют, панель задач присутствует и закрепление разрешено... время на закрепление!

Сначала создайте вторичную плитку так же, как и при закреплении на начальном экране. Дополнительные сведения о свойствах вторичной плитки можно узнать, прочитав дополнительные плитки с закреплением дополнительных плиток на начальном экране. Однако при закреплении на панели задач в дополнение к ранее необходимым свойствам Также требуется Square44x44Logo (это логотип, используемый панелью задач). В противном случае возникнет исключение .

Затем передайте плитку в метод RequestPinSecondaryTileAsync . Так как это находится под ограниченным доступом, это не будет отображать диалоговое окно подтверждения и не требует потока пользовательского интерфейса. Но в будущем, когда это открывается за пределами ограниченного доступа, вызывающие абоненты, не использующие ограниченный доступ, получат диалоговое окно и должны использоваться поток пользовательского интерфейса.

// Initialize the tile (all properties below are required)
SecondaryTile tile = new SecondaryTile("myTileId");
tile.DisplayName = "PowerPoint 2016 (Remote)";
tile.Arguments = "app=powerpoint";
tile.VisualElements.Square44x44Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square44x44Logo.png");
tile.VisualElements.Square150x150Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square150x150Logo.png");

// Pin it to the taskbar
bool isPinned = await taskbarManager.RequestPinSecondaryTileAsync(tile);

Этот метод возвращает логическое значение, указывающее, закреплена ли плитка на панели задач. Если плитка уже закреплена, метод обновляет существующую плитку и возвращает.true Если закрепление не было разрешено или панель задач не поддерживается, метод возвращается false.

Перечисление плиток

Чтобы просмотреть все созданные плитки и по-прежнему закреплены где-то (пуск, панель задач или оба), используйте FindAllAsync. Затем можно проверить, закреплены ли эти плитки на панели задач и (или) на начальной панели. Если поверхность не поддерживается, эти методы возвращают значение false.

var taskbarManager = TaskbarManager.GetDefault();
var startScreenManager = StartScreenManager.GetDefault();

// Look through all tiles
foreach (SecondaryTile tile in await SecondaryTile.FindAllAsync())
{
    if (taskbarManager != null && await taskbarManager.IsSecondaryTilePinnedAsync(tile.TileId))
    {
        // Tile is pinned to the taskbar
    }

    if (startScreenManager != null && await startScreenManager.ContainsSecondaryTileAsync(tile.TileId))
    {
        // Tile is pinned to Start
    }
}

Обновление плитки

Чтобы обновить уже закрепленную плитку, можно использовать метод SecondaryTile.UpdateAsync, как описано в разделе "Обновление вторичной плитки".

Открепить плитку

Приложение должно предоставить кнопку открепить, если плитка в настоящее время закреплена. Чтобы открепить плитку, просто вызовите TryUnpinSecondaryTileAsync, передавая TileId вторичную плитку, которую вы хотите отменить.

Этот метод возвращает логическое значение, указывающее, не закреплена ли плитка на панели задач. Если плитка не была закреплена в первую очередь, это также возвращается true. Если отключение не было разрешено, возвращается false.

Если плитка была закреплена только на панели задач, это приведет к удалению плитки, так как она больше не закреплена в любом месте.

var taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager != null)
{
    bool isUnpinned = await taskbarManager.TryUnpinSecondaryTileAsync("myTileId");
}

Удаление плитки

Если вы хотите открепить плитку везде (Пуск, панель задач), используйте метод RequestDeleteAsync .

Это подходит для случаев, когда содержимое, закрепленное пользователем, больше не применимо. Например, если приложение позволяет закрепить записную книжку на начальной и панели задач, а затем пользователь удаляет записную книжку, необходимо просто удалить плитку, связанную с записной книжкой.

// Initialize a secondary tile with the same tile ID you want removed.
// Or, locate it with FindAllAsync()
SecondaryTile toBeDeleted = new SecondaryTile(tileId);

// And then delete the tile
await toBeDeleted.RequestDeleteAsync();

Открепить только из start

Если вы хотите открепить вторичную плитку из Start, оставив ее на панели задач, можно вызвать метод StartScreenManager.TryRemoveSecondaryTileAsync . Это приведет к удалению плитки, если она больше не закреплена на других поверхностях.

Этот метод возвращает логическое значение, указывающее, не закреплена ли плитка на начальном экране. Если плитка не была закреплена в первую очередь, это также возвращается true. Если отключение не было разрешено или start не поддерживается, возвращается false.

await StartScreenManager.GetDefault().TryRemoveSecondaryTileAsync("myTileId");

Ресурсы