Fixar seu aplicativo na barra de tarefas

Agora você pode solicitar programaticamente que os usuários fixem seu aplicativo do Win32 ou UWP na barra de tarefas, semelhante a como você pode fixar seu aplicativo no menu Iniciar. E você pode verificar se o aplicativo está fixado no momento e se a barra de tarefas permite a fixação.

Captura de tela de uma barra de tarefas do Windows 11 mostrando o aplicativo fixado lá.

Importante

Requer a Fall Creators Update: você deve direcionar o SDK 16299 e executar o build 16299 ou posterior para usar as APIs da barra de tarefas.

APIs importantes: classe TaskbarManager

Quando você deve pedir ao usuário para fixar seu aplicativo na barra de tarefas?

A classe TaskbarManager permite que você peça ao usuário para fixar seu aplicativo na barra de tarefas; o usuário deve aprovar a solicitação. Você se esforça muito para criar um aplicativo estelar, e agora tem a oportunidade de pedir ao usuário para fixá-lo na barra de tarefas. Mas antes de nos aprofundarmos no código, aqui estão algumas coisas para ter em mente enquanto você está projetando sua experiência:

  • Crie uma UX não disruptiva e facilmente dispensável em seu aplicativo com uma chamada à ação clara. Evite usar caixas de diálogo e submenus para essa finalidade. Ícones de fixação acessíveis ou UX semelhante são recomendados, mas não são necessários.
  • Verifique se seu aplicativo tem valor para o usuário antes de pedir ao usuário para fixá-lo.
  • Não peça a um usuário para fixar seu aplicativo se o bloco já estiver fixado ou se o dispositivo não der suporte a ele. (Este artigo explica como determinar se há suporte para fixação.)
  • Não peça repetidamente ao usuário para fixar seu aplicativo (ele provavelmente ficará irritado).
  • Não chame a API de fixação sem interação explícita do usuário ou quando seu aplicativo estiver minimizado/não aberto. Seu aplicativo deve estar em primeiro plano para que o processo funcione.
  • Não use instaladores para chamar a API.

Aprovação do Recurso de Acesso Limitado (LAF)

Importante

A Fixação da Barra de tarefas é um Recurso de Acesso Limitado (consulte a classe LimitedAccessFeatures). Para obter mais informações ou solicitar um token de desbloqueio, use o Formulário de Solicitação de Token de Acesso LAF.

1. Verificar se as APIs necessárias existem

UWP

Se o aplicativo der suporte a versões mais antigas do Windows 10, você precisará verificar se a classe TaskbarManager está disponível. Você pode usar o método ApiInformation.IsTypePresent para executar essa verificação. Se a classe TaskbarManager não estiver disponível, evite executar chamadas para as APIs.

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

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

Win32

Se você quiser usar TaskbarManager do seu aplicativo de área de trabalho do WIn32, precisará verificar se o suporte a aplicativos de área de trabalho está presente. Você pode procurar a interface de marcador ITaskbarManagerDesktopAppSupportStatics na fábrica de ativação TaskbarManager para executar essa verificação. Se essa interface não estiver disponível, você não poderá usar TaskbarManager em seu aplicativo da área de trabalho.

if (winrt::try_get_activation_factory<winrt::Windows::UI::Shell::TaskbarManager, winrt::Windows::UI::Shell::ITaskbarManagerDesktopAppSupportStatics>())
{
    // TaskbarManager desktop app support is available.
}
else
{
    // TaskbarManager desktop app support is not available.
}

2. Verificar se a barra de tarefas está presente e se permite a fixação

Os aplicativos do Windows podem ser executados em uma ampla variedade de dispositivos; nem todos dão suporte à barra de tarefas. No momento, somente dispositivos da área de trabalho dão suporte à barra de tarefas. Além disso, os aplicativos podem solicitar a fixação, mas a fixação pode não ser permitida em um determinado momento. Sugere-se que os aplicativos verifiquem se a fixação é permitida antes que a experiência de usuário seja exibida para evitar usuários confusos.

Mesmo que a barra de tarefas esteja disponível, uma política de grupo no computador do usuário poderá desabilitar a fixação da barra de tarefas. Portanto, antes de tentar fixar seu aplicativo, você precisa verificar se há suporte para fixação na barra de tarefas. A propriedade TaskbarManager.IsPinningAllowed retornará true se a barra de tarefas estiver presente e permitir a fixação.

// Check if taskbar allows pinning, apps may request pinning, but pinning may not be allowed at any given time. It is suggested that apps check whether pinning is allowed before a UX is surfaced in order to prevent confusing users.

bool isPinningAllowed = TaskbarManager.GetDefault().IsPinningAllowed;

Importante

Também há requisitos que devem ser atendidos no momento em que a chamada é realmente feita para que a solicitação de fixação seja permitida:

  • O aplicativo está em primeiro plano
  • O aplicativo tem uma entrada de menu Iniciar

Esses requisitos não resultarão em uma exceção se não forem atendidos, a solicitação de fixação será negada. IsPinningAllowed pode ser chamado para determinar se uma solicitação para fixar (prompt) será permitida.

Observação

Se você não quiser fixar seu aplicativo na barra de tarefas e apenas quiser descobrir se a barra de tarefas está disponível, use a propriedade TaskbarManager.IsSupported.

3. Verifique se o aplicativo está fixado na barra de tarefas no momento

Obviamente, não vale a pena pedir ao usuário para permitir que você fixe o aplicativo na barra de tarefas se ele já estiver fixado lá. Você pode usar o método TaskbarManager.IsCurrentAppPinnedAsync para verificar se o aplicativo já está fixado antes de perguntar ao usuário.

// 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. Fixar seu aplicativo

Se a barra de tarefas estiver presente e a fixação for permitida e seu aplicativo não estiver fixado no momento, talvez você queira mostrar uma dica sutil para informar aos usuários que eles podem fixar seu aplicativo. Por exemplo, você pode mostrar um ícone de fixação em algum lugar da interface do usuário que o usuário pode clicar.

Se o usuário clicar na interface do usuário de sugestão de fixação, você chamará o método TaskbarManager.RequestPinCurrentAppAsync. Esse método exibe uma caixa de diálogo que solicita que o usuário confirme se deseja que seu aplicativo seja fixado na barra de tarefas.

Importante

Isso deve ser chamado de um thread de interface do usuário em primeiro plano; caso contrário, uma exceção será gerada.

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

Caixa de diálogo Fixar

Esse método retorna um valor booliano que indica se o seu aplicativo agora está fixado na barra de tarefas. Se o aplicativo já estiver fixado, o método retornará true imediatamente sem mostrar a caixa de diálogo para o usuário. Se o usuário clicar em "não" na caixa de diálogo ou fixar seu aplicativo na barra de tarefas não for permitido, o método retornará false. Caso contrário, se o usuário clicou sim e o aplicativo foi fixado, a API retornará true.

Recursos