작업 표시줄에 앱 고정

이제 시작 메뉴 앱을 고정하는 방법과 마찬가지로 프로그래밍 방식으로 사용자에게 Win32 또는 UWP 앱을 작업 표시줄에 고정하도록 요청할 수 있습니다. 그리고 앱이 현재 고정되어 있는지, 작업 표시줄에 고정할 수 있는지 여부를 확인할 수 있습니다.

고정되어 있는 앱을 보여 주는 Windows 11 작업 표시줄의 스크린샷입니다.

Important

Fall Creators 업데이트 필요: 작업 표시줄 API를 사용하려면 SDK 15063을 대상으로 하고 빌드 16299 이상을 실행해야 합니다.

중요 API: TaskbarManager 클래스

언제 사용자에게 앱을 작업 표시줄에 고정하라고 요청해야 할까요?

TaskbarManager 클래스를 사용하여 사용자에게 앱을 작업 표시줄에 고정하라고 요청하면 사용자는 요청을 승인해야 합니다. 여러분은 멋진 앱을 만들기 위해 많은 노력을 기울였으며, 이제 사용자에게 앱을 작업 표시줄에 고정하라고 요청할 차례입니다. 그러나 코딩을 진행하기 전에 환경 설계 시 유념해야 할 몇 가지 사항이 있습니다.

  • 명확한 클릭 유도 문안을 통해 비파괴적이며 쉽게 삭제할 수 있는 UX를 만드세요. 이러한 목적에 대화 상자와 플라이아웃은 사용하지 마세요. 액세스 가능한 고정 아이콘 또는 유사한 UX가 권장되지만 필수는 아닙니다.
  • 앱에 고정을 요청하기 전에 사용자에게 값이 있는지 확인하세요.
  • 타일이 이미 고정되어 있거나 디바이스에서 고정을 지원하지 않는 경우 앱을 고정하라고 요청하지 마세요. (이 문서에서는 고정이 지원되는지 확인하는 방법을 설명합니다.)
  • 사용자에게 앱을 고정하라고 반복적으로 요청하지 마세요. 사용자가 귀찮아할 수 있습니다.
  • 명시적인 사용자 상호 작용이 없거나 앱이 최소화되어 있거나 열려 있지 않은 경우 고정 API를 호출하지 마세요. 프로세스가 작동하려면 앱이 포그라운드에 있어야 합니다.
  • 설치 관리자를 사용하여 API를 호출하지 마세요.

LAF(제한된 액세스 기능) 승인

Important

작업 표시줄 고정은 제한된 액세스 기능입니다(LimitedAccessFeatures 클래스 참조). 자세한 내용을 확인하거나 잠금 해제 토큰을 요청하려면 Microsoft 지원 문의하세요.

1. 필요한 API가 있는지 확인

UWP

앱이 이전 버전의 Windows 10을 지원하는 경우 TaskbarManager 클래스를 사용할 수 있는지 확인해야 합니다. ApiInformation.IsTypePresent 메서드를 사용하여 이 확인 작업을 수행할 수 있습니다. TaskbarManager 클래스를 사용할 수 없는 경우, API 호출을 실행하지 마십시오.

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

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

Win32

WIn32 데스크톱 앱에서 TaskbarManager을(를) 사용하려면 데스크톱 앱 지원이 있는지 여부를 검사합니다. TaskbarManager 활성화 팩토리에서 이 검사를 수행하기 위한 ITaskbarManagerDesktopAppSupportStatics 마커 인터페이스를 찾을 수 있습니다. 이 인터페이스를 사용할 수 없는 경우 TaskbarManager을(를) 데스크톱 앱에서 사용할 수 없습니다.

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. 작업 표시줄이 있고 고정이 가능한지 확인

Windows 앱은 다양한 디바이스에서 실행할 수 있습니다. 모두가 작업 표시줄을 지원하는 것은 아닙니다. 현재는 데스크톱 디바이스만 작업 표시줄을 지원합니다. 또한 앱은 고정을 요청할 수 있지만 고정은 지정된 시간에 허용되지 않을 수 있습니다. 앱은 사용자에게 혼란을 주지 않도록 UX가 노출되기 전에 고정이 허용되는지 여부를 확인하는 것이 좋습니다.

작업 표시줄을 사용할 수 있더라도 사용자 컴퓨터의 그룹 정책에 의해 작업 표시줄에 고정을 사용하지 못할 수도 있습니다. 따라서 앱을 고정하려고 시도하기 전에 작업 표시줄에 고정이 지원되는지 여부를 먼저 확인해야 합니다. TaskbarManager.IsPinningAllowed 속성은 작업 표시줄이 있고 고정을 허용하는 경우 true을(를) 반환합니다.

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

Important

핀 요청을 허용하기 위해 실제로 호출이 수행될 때 충족해야 하는 요구사항도 있습니다.

  • 앱이 포그라운드에 있습니다.
  • 앱에 시작 메뉴 항목이 있습니다.

이러한 요구사항이 충족되지 않으면 예외가 발생하지 않으며 핀 요청이 거부됩니다. IsPinningAllowed을(를) 호출하여 핀 요청(프롬프트)이 허용되는지 여부를 확인할 수 있습니다.

참고 항목

앱을 작업 표시줄에 고정하지 않고 작업 표시줄을 사용할 수 있는지만 확인하려면 TaskbarManager.IsSupported 속성을 사용합니다.

3. 앱이 현재 작업 표시줄에 고정되어 있는지 확인

당연한 말이지만, 앱이 이미 작업 표시줄에 고정되어 있는데 사용자에게 앱을 작업 표시줄에 고정하라고 요청하는 것은 아무 의미가 없습니다. 사용자에게 앱을 고정하라고 요청하기 전에 TaskbarManager.IsCurrentAppPinnedAsync 메서드를 사용하여 앱이 이미 고정되어 있는지 확인할 수 있습니다.

// 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. 앱 고정

작업 표시줄이 있고, 앱 고정이 허용되고, 앱이 현재 고정되어 있지 않으면 사용자에게 앱을 고정할 수 있음을 알리는 세련된 팁을 표시할 수 있습니다. 예를 들어 UI 어딘가에 사용자가 클릭할 수 있는 핀 아이콘을 표시할 수 있습니다.

사용자가 고정 제안 UI를 클릭하면 TaskbarManager.RequestPinCurrentAppAsync 메서드를 호출해야 합니다. 이 메서드는 앱을 작업 표시줄에 고정할 것인지 사용자에게 다시 묻는 대화 상자를 표시합니다.

Important

이 메서드는 포그라운드 UI 스레드에서 호출되어야 하며, 그렇지 않으면 예외가 발생합니다.

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

고정 대화 상자

이 메서드는 앱이 현재 작업 표시줄에 고정되어 있는지 여부를 나타내는 부울 값을 반환합니다. 앱이 이미 고정된 경우 메서드가 사용자에게 대화 상자를 표시하지 않고 바로 true을(를) 반환합니다. 사용자가 대화 상자에서 '아니요'를 클릭하거나 작업 표시줄에 앱을 고정할 수 없는 경우 메서드가 false을(를) 반환합니다. 그렇지 않고 사용자가 '예'를 클릭했으며 앱이 고정되어 있으면 API가 true을(를) 반환합니다.

리소스