다음을 통해 공유


작업 표시줄에 보조 타일 고정

보조 타일을 시작에 고정하는 것처럼 보조 타일을 작업 표시줄에 고정하여 사용자가 앱 내의 콘텐츠에 빠르게 액세스할 수 있도록 할 수 있습니다.

Taskbar pinning

Important

Limited Access API: 이 API는 제한된 액세스 기능입니다. 이 API를 사용하려면 taskbarsecondarytile@microsoft.com에 문의합니다.

2018년 10월 업데이트 필요: 작업 표시줄에 고정하려면 SDK 17763을 대상으로 하고 빌드 17763 이상을 실행 중이어야 합니다.

지침

보조 타일은 사용자가 앱 내의 특정 영역에 직접 액세스할 수 있는 일관되고 효율적인 방법을 제공합니다. 사용자가 보조 타일을 작업 표시줄에 "고정"할지 여부를 선택하지만 앱의 고정 가능한 영역은 개발자가 결정합니다. 자세한 내용은 보조 타일 지침를 참조하세요.

1. API가 있는지 확인하고 제한된 액세스 잠금 해제

이전 디바이스에는 작업 표시줄 고정 API가 없습니다(이전 버전의 Windows 10을 대상으로 하는 경우). 따라서 고정할 수 없는 이러한 디바이스에는 고정 단추를 표시하지 않아야 합니다.

또한 이 기능은 제한된 액세스로 잠겨 있습니다. 액세스 권한을 가져오려면 Microsoft에 문의합니다. TaskbarManager.RequestPinSecondaryTileAsync, TaskbarManager.IsSecondaryTilePinnedAsync, and TaskbarManager.TryUnpinSecondaryTileAsync에 대한 API 호출은 액세스 거부 예외와 함께 실패합니다. 앱은 허가 없이 이 API를 사용할 수 없으며 API 정의는 언제든지 변경될 수 있습니다.

ApiInformation.IsMethodPresent 메서드를 사용하여 API가 있는지 확인합니다. 그런 다음 LimitedAccessFeatures API를 사용하여 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. Pinning 허용 여부 확인

작업 표시줄에 고정하는 것은 그룹 정책에 의해 사용하지 않도록 설정될 수 있습니다. 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(작업 표시줄에서 사용하는 로고)도 필요합니다. 그렇지 않으면 예외가 throw됩니다.

그런 다음 타일을 RequestPinSecondaryTileAsync 메서드에 전달합니다. 액세스가 제한되어 있으므로 확인 대화 상자가 표시되지 않으며 UI 스레드가 필요하지 않습니다. 그러나 앞으로 이것이 제한된 액세스를 넘어서 열리면 제한된 액세스를 사용하지 않는 호출자는 대화를 수신하고 UI 스레드를 사용해야 합니다.

// 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 메서드를 사용할 수 있습니다.

타일 고정 해제

타일이 현재 고정되어 있는 경우 앱에서 고정 해제 단추를 제공해야 합니다. 타일을 고정 해제하려면 고정 해제하려는 보조 타일의 TileId를 전달하여 TryUnpinSecondaryTileAsync를 호출하면 됩니다.

이 메서드는 타일이 더 이상 작업 표시줄에 고정되어 있지 않은지 여부를 나타내는 부울 값을 반환합니다. 타일이 처음에 고정되지 않은 경우에도 true를 반환합니다. 고정 해제가 허용되지 않은 경우 false를 반환합니다.

타일이 작업 표시줄에만 고정된 경우 타일이 더 이상 어디에도 고정되지 않으므로 삭제됩니다.

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

타일 삭제

모든 위치(시작, 작업 표시줄)에서 타일을 고정 해제하려면 RequestDeleteAsync 메서드를 사용합니다.

사용자가 고정한 콘텐츠가 더 이상 적용되지 않는 경우에 적합합니다. 예를 들어 앱에서 Notebook을 시작 및 작업 표시줄에 고정한 다음 사용자가 Notebook을 삭제하는 경우 Notebook과 연결된 타일을 삭제하기만 하면 됩니다.

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

시작에서만 고정 해제

보조 타일을 작업 표시줄에 그대로 두고 시작에서 고정을 해제하려는 경우에만 StartScreenManager.TryRemoveSecondaryTileAsync 메서드를 호출할 수 있습니다. 타일이 더 이상 다른 표면에 고정되어 있지 않으면 유사하게 타일을 삭제합니다.

이 메서드는 타일이 더 이상 시작에 고정되어 있지 않은지 여부를 나타내는 부울 값을 반환합니다. 타일이 처음에 고정되지 않은 경우에도 true를 반환합니다. 고정 해제가 허용되지 않거나 시작이 지원되지 않으면 false를 반환합니다.

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

리소스