Compartir a través de


Anclar iconos secundarios a la barra de tareas

Nota:

Los iconos dinámicos son una característica de Windows 10 que no se admite en versiones posteriores de Windows. En el caso de las nuevas aplicaciones, se recomienda seguir las instrucciones actuales para los iconos de la aplicación.

Al igual que anclar iconos secundarios a Inicio, puedes anclar iconos secundarios a la barra de tareas, lo que proporciona a los usuarios acceso rápido al contenido dentro de la aplicación.

Anclaje de la barra de tareas

Importante

API de acceso limitado: esta API es una característica de acceso limitado. Para usar esta API, póngase en contacto con taskbarsecondarytile@microsoft.com.

Requiere la actualización de octubre de 2018: debe tener como destino el SDK 17763 y ejecutar la compilación 17763 o posterior para anclar a la barra de tareas.

Guía

Un icono secundario proporciona una manera coherente y eficaz de que los usuarios accedan directamente a áreas específicas dentro de una aplicación. Aunque un usuario elige si se va a "anclar" un icono secundario a la barra de tareas, el desarrollador determina las áreas anclables de una aplicación. Para obtener más instrucciones, consulte Guía del icono secundario.

1. Determinar si la API existe y desbloquear el acceso limitado

Los dispositivos más antiguos no tienen las API de anclaje de la barra de tareas (si el destino es versiones anteriores de Windows 10). Por lo tanto, no debe mostrar un botón de anclaje en estos dispositivos que no son capaces de anclar.

Además, esta característica está bloqueada en Acceso limitado. Para obtener acceso, póngase en contacto con Microsoft. Las llamadas API a TaskbarManager.RequestPinSecondaryTileAsync, TaskbarManager.IsSecondaryTilePinnedAsync y TaskbarManager.TryUnpinSecondaryTileAsync producirán un error con una excepción de Acceso denegado. Las aplicaciones no pueden usar esta API sin permiso y la definición de api puede cambiar en cualquier momento.

Use el método ApiInformation.IsMethodPresent para determinar si las API están presentes. A continuación, use la API LimitedAccessFeatures para intentar desbloquear la 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. Obtención de la instancia de TaskbarManager

Las aplicaciones de Windows se pueden ejecutar en una amplia variedad de dispositivos; no todos ellos admiten la barra de tareas. En este momento, solo los dispositivos de escritorio admiten la barra de tareas. Además, la presencia de la barra de tareas puede venir y ir. Para comprobar si la barra de tareas está presente actualmente, llame al método TaskbarManager.GetDefault y compruebe que la instancia devuelta no es null. No muestre un botón de anclaje si la barra de tareas no está presente.

Se recomienda mantener en la instancia durante una sola operación, como anclar y, a continuación, agarrar una nueva instancia la próxima vez que necesite realizar otra operación.

TaskbarManager taskbarManager = TaskbarManager.GetDefault();

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

3. Compruebe si el icono está anclado actualmente a la barra de tareas

Si el icono ya está anclado, debe mostrar un botón de desanclar en su lugar. Puede usar el método IsSecondaryTilePinnedAsync para comprobar si el icono está anclado actualmente (los usuarios pueden desanclarlo en cualquier momento). En este método, se pasa el TileId elemento del icono que desea saber que está anclado.

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. Compruebe si se permite anclar

La asignación a la barra de tareas se puede deshabilitar mediante la directiva de grupo. La propiedad TaskbarManager.IsPinningAllowed permite comprobar si se permite anclar.

Cuando el usuario hace clic en el botón anclar, debe comprobar esta propiedad y, si es false, debe mostrar un cuadro de diálogo de mensaje que informe al usuario de que el anclaje no está permitido en este equipo.

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. Construir y anclar el icono

El usuario ha hecho clic en el botón anclar y ha determinado que las API están presentes, la barra de tareas está presente y se permite anclar... tiempo para anclar!

En primer lugar, construya el icono secundario como lo haría al anclar a Inicio. Para obtener más información sobre las propiedades del icono secundario, lea Anclar iconos secundarios a Inicio. Sin embargo, al anclar a la barra de tareas, además de las propiedades necesarias anteriormente, Square44x44Logo (este es el logotipo usado por la barra de tareas) también es necesario. De lo contrario, se producirá una excepción .

A continuación, pase el icono al método RequestPinSecondaryTileAsync . Dado que esto está bajo acceso limitado, no mostrará un cuadro de diálogo de confirmación y no requiere un subproceso de interfaz de usuario. Pero en el futuro, cuando esto se abre más allá del acceso limitado, los autores de llamadas que no usan acceso limitado recibirán un cuadro de diálogo y serán necesarios para usar el subproceso de la interfaz de usuario.

// 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);

Este método devuelve un valor booleano que indica si el icono está anclado ahora a la barra de tareas. Si el icono ya estaba anclado, el método actualiza el icono existente y devuelve true. Si no se permite el anclaje o no se admite la barra de tareas, el método devuelve false.

Enumerar iconos

Para ver todos los iconos que ha creado y siguen anclados en algún lugar (Inicio, barra de tareas o ambos), use FindAllAsync. Posteriormente, puede comprobar si estos iconos están anclados a la barra de tareas o a Inicio. Si no se admite la superficie, estos métodos devuelven 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
    }
}

Actualizar un icono

Para actualizar un icono ya anclado, puede usar el método SecondaryTile.UpdateAsync como se describe en Actualización de un icono secundario.

Desanclar un icono

La aplicación debe proporcionar un botón de desanclar si el icono está anclado actualmente. Para desanclar el icono, simplemente llame a TryUnpinSecondaryTileAsync y pase el TileId elemento del icono secundario que desea desanclar.

Este método devuelve un valor booleano que indica si el icono ya no está anclado a la barra de tareas. Si el icono no se ancló en primer lugar, también devuelve true. Si no se permite la anulación de la asignación, devuelve false.

Si el icono solo se ancló en la barra de tareas, se eliminará el icono, ya que ya no está anclado en ningún lugar.

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

Eliminar un icono

Si desea desanclar un icono desde cualquier lugar (Inicio, barra de tareas), use el método RequestDeleteAsync .

Esto es adecuado para los casos en los que el contenido anclado por el usuario ya no es aplicable. Por ejemplo, si la aplicación te permite anclar un bloc de notas a Inicio y barra de tareas y, a continuación, el usuario elimina el bloc de notas, simplemente debes eliminar el icono asociado al cuaderno.

// 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();

Desanclar solo desde Start

Si solo desea desanclar un icono secundario de Start mientras se deja en la barra de tareas, puede llamar al método StartScreenManager.TryRemoveSecondaryTileAsync . Esto eliminará de forma similar el icono si ya no está anclado a ninguna otra superficie.

Este método devuelve un valor booleano que indica si el icono ya no está anclado a Start. Si el icono no se ancló en primer lugar, también devuelve true. Si no se permite la anulación o no se admite Start, devuelve false.

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

Recursos