Fixar seu aplicativo na barra de tarefasPin your app to the taskbar

Programaticamente, você pode fixar o bloco principal do seu app na barra de tarefa, da mesma forma que pode fixar seu app no menu Iniciar.You can programmatically pin your own app to the taskbar, just like you can pin your app to the Start menu. E você pode verificar se seu app está fixado e se a barra de tarefas permite que se fixe apps.And you can check whether your app is currently pinned, and whether the taskbar allows pinning.

Captura de tela de uma barra de tarefas do Windows 10 mostrando o aplicativo fixado ali.

Importante

Requer a Fall Creators Update: você precisa usar o SDK 16299 e executar a compilação 16299 ou mais recente para usar as APIs de barra de tarefa.Requires Fall Creators Update: You must target SDK 16299 and be running build 16299 or higher to use the taskbar APIs.

APIs importantes: classe TaskbarManagerImportant APIs: TaskbarManager class

Quando você deve pedir ao usuário para fixar seu app na barra de tarefas?When should you ask the user to pin your app to the taskbar?

A classe TaskbarManager permite que você peça ao usuário para fixar seu app na barra de tarefas; o usuário deverá aprovar a solicitação.The TaskbarManager class lets you ask the user to pin your app to the taskbar; the user must approve the request. Você se esforçou para criar um app fora de série e agora você tem a oportunidade de pedir ao usuário para fixá-lo na barra de tarefas.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. Antes de mergulharmos no código, aqui estão alguns itens que você deve lembrar ao criar sua experiência:But before we dive into the code, here are some things to keep in mind as you are designing your experience:

  • Crie uma experiência do usuário sem interrupções e que não possa ser ignorada facilmente no app com uma chamada de ação clara para "Fixar na barra de tarefas".Do craft a non-disruptive and easily dismissible UX in your app with a clear "Pin to taskbar" call to action. Evite usar caixas de diálogo e submenus para essa finalidade.Avoid using dialogs and flyouts for this purpose.
  • Explique claramente o valor de seu app antes de pedir ao usuário para fixá-lo na barra de tarefas.Do clearly explain the value of your app before asking the user to pin it.
  • Não peça a um usuário para fixar o app se o bloco já tiver sido fixado ou se o dispositivo não oferecer suporte a isso.Don't ask a user to pin your app if the tile is already pinned or the device doesn’t support it. (Este artigo explica como determinar se há suporte para a fixação.)(This article explains how to determine whether pinning is supported.)
  • Não peça repetidamente para o usuário fixar seu app (eles provavelmente ficarão aborrecidos).Don't repeatedly ask the user to pin your app (they will probably get annoyed).
  • Não chame a fixação de API sem interação explícita do usuário ou quando o app estiver minimizado/não abrir.Don't call the pin API without explicit user interaction or when your app is minimized/not open.

1. Verifique se as APIs necessárias existem1. Check whether the required APIs exist

Se o aplicativo oferece suporte às versões mais antigas do Windows 10, é preciso verificar se a classe TaskbarManager está disponível.If your app supports older versions of Windows 10, you need to check whether the TaskbarManager class is available. Você pode usar o método ApiInformation.IsTypePresent para executar essa verificação.You can use the ApiInformation.IsTypePresent method to perform this check. Se a classe TaskbarManager não estiver disponível, evite a execução de chamadas às APIs.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. Verifique se a barra de tarefas está presente e permite a fixação2. Check whether taskbar is present and allows pinning

Os aplicativos do Windows podem ser executados em uma ampla variedade de dispositivos; Nem todos eles dão suporte à barra de tarefas.Windows apps can run on a wide variety of devices; not all of them support the taskbar. No momento, somente dispositivos desktop são compatíveis com a barra de tarefas.Right now, only Desktop devices support the taskbar.

Mesmo que a barra de tarefas esteja disponível, uma política de grupo no computador do usuário pode desabilitar a fixação na barra de tarefas.Even if the taskbar is available, a group policy on the user's machine might disable taskbar pinning. Portanto, antes de tentar fixar seu app, você precisa verificar se a opção é possível fixar apps na barra de tarefas.So, before you attempt to pin your app, you need to check whether pinning to the taskbar is supported. A propriedade TaskbarManager.IsPinningAllowed retorna true se a barra de tarefas estiver presente e permitir a fixação.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;

Observação

Se você não quiser fixar seu app na barra de tarefas e apenas quiser saber se a barra de tarefas está disponível, use a propriedade 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. Verifique se o seu app está atualmente fixado na barra de tarefas3. Check whether your app is currently pinned to the taskbar

Obviamente, não faz sentido pedir ao usuário para permitir que você fixe o app na barra de tarefas se ele já estiver fixado lá.Obviously, there's no point in asking the user to let you pin the app to the taskbar if it's already pinned there. Você pode usar o método TaskbarManager.IsCurrentAppPinnedAsync para verificar se o app já está fixado antes de pedir que o usuário.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. Fixe seu app4. Pin your app

Se a barra de tarefas estiver presente e a fixação for permitida e seu app não estiver fixado, você talvez queira mostrar uma dica sutil para que os usuários saibam que podem fixar seu 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. Por exemplo, você pode mostrar um ícone de fixação em algum lugar na interface do usuário no qual o usuário poderá clicar.For example, you might show a pin icon somewhere in your UI that the user can click.

Se o usuário clicar na interface do usuário de sugestão de fixação, você poderá chamar o método TaskbarManager.RequestPinCurrentAppAsync.If the user clicks your pin suggestion UI, you would then call the TaskbarManager.RequestPinCurrentAppAsync method. Esse método exibirá uma caixa de diálogo que pede ao usuário para confirmar se ele quer seu app fixado na barra de tarefas.This method displays a dialog that asks the user to confirm that they want your app pinned to the taskbar.

Importante

Isso deve ser chamado direto de um thread de interface do usuário em primeiro plano, caso contrário, uma exceção será lançada.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();

Caixa de diálogo de fixação

Esse método retorna um valor booliano que indica se o seu app está fixado na barra de tarefas.This method returns a boolean value that indicates whether your app is now pinned to the taskbar. Se o app já foi fixado, o método retornará imediatamente o valor true sem mostrar a caixa de diálogo para o usuário.If your app was already pinned, the method immediately returns true without showing the dialog to the user. Se o usuário clicar em "não" na caixa de diálogo ou se não for permitido fixar o app na barra de tarefas, o método retornará false.If the user clicks "no" on the dialog, or pinning your app to the taskbar isn't allowed, the method returns false. Caso contrário, ou seja, o usuário tiver clicado em "sim" e o app estiver fixado, a API retornará true.Otherwise, the user clicked yes and the app was pinned, and the API will return true.

RecursosResources