작업 표시줄에 보조 타일 고정Pin secondary tiles to taskbar

보조 타일을 시작으로 고정 하는 것 처럼 보조 타일을 작업 표시줄에 고정 하 여 사용자에 게 앱 내의 콘텐츠에 빠르게 액세스할 수 있습니다.Just like pinning secondary tiles to Start, you can pin secondary tiles to the taskbar, giving your users quick access to content within your app.

Taskbar pinning

중요

제한 된 액세스 api:이 api는 제한 된 액세스 기능입니다.Limited Access API: This API is a limited access feature. 이 API를 사용 하려면에 문의 하세요 taskbarsecondarytile@microsoft.com .To use this API, please contact taskbarsecondarytile@microsoft.com.

10 월 2018 업데이트 필요: 작업 표시줄에 고정 하려면 SDK 17763를 대상으로 하 고 빌드 17763 이상을 실행 해야 합니다.Requires October 2018 Update: You must target SDK 17763 and be running build 17763 or higher to pin to taskbar.

지침Guidance

보조 타일은 사용자가 앱 내의 특정 영역에 직접 액세스할 수 있는 일관 되 고 효율적인 방법을 제공 합니다.A secondary tile provides a consistent, efficient way for users to directly access specific areas within an app. 사용자가 작업 표시줄에 보조 타일을 "고정" 할지 여부를 선택 하더라도 응용 프로그램의 pinnable 영역은 개발자에 의해 결정 됩니다.Although a user chooses whether or not to "pin" a secondary tile to the taskbar, the pinnable areas in an app are determined by the developer. 자세한 지침은 보조 타일 지침을 참조 하세요.For more guidance, see Secondary tile guidance.

1. API가 있는지 확인 하 고 제한 된 액세스의 잠금을 해제 합니다.1. Determine if API exists and unlock Limited-Access

이전 장치에는 Api 고정 (이전 버전의 Windows 10을 대상으로 하는 경우)이 없습니다.Older devices don't have the taskbar pinning APIs (if you're targeting older versions of Windows 10). 따라서 이러한 장치에 고정할 수 없는 고정 단추를 표시 해서는 안 됩니다.Therefore, you shouldn't display a pin button on these devices that aren't capable of pinning.

또한이 기능은 제한 된 액세스 상태에서 잠깁니다.Additionally, this feature is locked under Limited-Access. 액세스 권한을 얻으려면 Microsoft에 문의 하세요.To gain access, contact Microsoft. TaskRequestPinSecondaryTileAsync, TaskTryUnpinSecondaryTileAsync. IsSecondaryTilePinnedAsyncTASK 관리자 에 대 한 API 호출이 실패 하 고 액세스 거부 예외가 발생 합니다.API calls to TaskbarManager.RequestPinSecondaryTileAsync, TaskbarManager.IsSecondaryTilePinnedAsync, and TaskbarManager.TryUnpinSecondaryTileAsync will fail with an Access Denied exception. 앱은 권한 없이이 API를 사용할 수 없으며 API 정의는 언제 든 지 변경 될 수 있습니다.Apps are not allowed to use this API without permission, and the API definition may change at any time.

Apiinformation. IsMethodPresent 메서드를 사용 하 여 api가 있는지 확인 합니다.Use the ApiInformation.IsMethodPresent method to determine if the APIs are present. 그런 다음 LimitedAccessFeatures api를 사용 하 여 api의 잠금을 해제 합니다.And then use the LimitedAccessFeatures API to try unlocking the 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 인스턴스 가져오기2. Get the TaskbarManager instance

Windows 앱은 다양 한 장치에서 실행할 수 있습니다. 일부는 작업 표시줄을 지원 하지 않습니다.Windows apps can run on a wide variety of devices; not all of them support the taskbar. 현재는 데스크톱 장치만 작업 표시줄을 지원 합니다.Right now, only Desktop devices support the taskbar. 또한 작업 표시줄이 있을 수 있습니다.Additionally, presence of the taskbar might come and go. 작업 표시줄이 현재 존재 하는지 여부를 확인 하려면 task 메서드를 호출 하 고 반환 된 인스턴스가 null이 아닌 지 확인 합니다.To check whether taskbar is currently present, call the TaskbarManager.GetDefault method and check that the instance returned is not null. 작업 표시줄이 없으면 고정 단추를 표시 하지 않습니다.Don't display a pin button if the taskbar isn't present.

단일 작업 (예: 고정)의 기간 동안 인스턴스를 유지 한 다음, 다음에 다른 작업을 수행 해야 할 때 새 인스턴스를 선택 하는 것이 좋습니다.We recommend holding onto the instance for the duration of a single operation, like pinning, and then grabbing a new instance the next time you need to do another operation.

TaskbarManager taskbarManager = TaskbarManager.GetDefault();

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

3. 타일이 현재 작업 표시줄에 고정 되어 있는지 확인 합니다.3. Check whether your tile is currently pinned to the taskbar

타일이 이미 고정 되어 있는 경우 대신 고정 해제 단추를 표시 해야 합니다.If your tile is already pinned, you should display an unpin button instead. IsSecondaryTilePinnedAsync 메서드를 사용 하 여 타일이 현재 고정 되어 있는지 여부를 확인할 수 있습니다 (사용자가 언제 든 지 고정 해제할 수 있음).You can use the IsSecondaryTilePinnedAsync method to check whether your tile is currently pinned (users can unpin it at any time). 이 방법에서는 알고 싶은 타일의 TileId 가 고정 되어 전달 됩니다.In this method, you pass the TileId of the tile you want to know is pinned.

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. 고정이 허용 되는지 확인 합니다.4. Check whether pinning is allowed

그룹 정책 하 여 작업 표시줄에 고정을 사용 하지 않도록 설정할 수 있습니다.Pinning to the taskbar can be disabled by Group Policy. TaskIsPinningAllowed 속성을 사용 하 여 고정이 허용 되는지 여부를 확인할 수 있습니다.The TaskbarManager.IsPinningAllowed property lets you check whether pinning is allowed.

사용자가 pin 단추를 클릭 하면이 속성을 확인 하 고, false 이면이 컴퓨터에서 고정이 허용 되지 않는다는 내용의 메시지 대화 상자를 표시 해야 합니다.When the user clicks your pin button, you should check this property, and if it's false, you should display a message dialog informing the user that pinning is not allowed on this machine.

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. 타일 구성 및 고정5. Construct and pin your tile

사용자가 pin 단추를 클릭 하 여 Api가 있고, 작업 표시줄이 있으며, 고정이 허용 되는 것으로 확인 되었습니다. 고정 시간The user has clicked your pin button, and you've determined that the APIs are present, taskbar is present, and pinning is allowed... time to pin!

먼저를 시작에 고정 하는 것과 마찬가지로 보조 타일을 구성 합니다.First, construct your secondary tile just like you would when pinning to Start. 보조 타일 속성에 대 한 자세한 내용은 시작 하려면 Pin 보조 타일을참조 하세요.You can learn more about the secondary tile properties by reading Pin secondary tiles to Start. 그러나 작업 표시줄에 고정 하는 경우 이전에 필요한 속성 외에 Square44x44Logo (작업 표시줄에 사용 되는 로고)도 필요 합니다.However, when pinning to taskbar, in addition to the previously required properties, Square44x44Logo (this is the logo used by taskbar) is also required. 그렇지 않으면 예외가 throw됩니다.Otherwise, an exception will be thrown.

그런 다음 RequestPinSecondaryTileAsync 메서드에 타일을 전달 합니다.Then, pass the tile to the RequestPinSecondaryTileAsync method. 이는 액세스가 제한 된 상태 이므로 확인 대화 상자를 표시 하지 않으며 UI 스레드를 요구 하지 않습니다.Since this is under limited-access, this will not display a confirmation dialog and does not require a UI thread. 그러나이 기능이 제한 된 액세스를 초과 하 여 열리면 호출자는 제한 된 액세스를 활용 하지 않는 호출자가 대화를 받고 UI 스레드를 사용 해야 합니다.But in the future when this is opened up beyond limited-access, callers not utilizing limited-access will receive a dialog and be required to use the UI thread.

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

이 메서드는 현재 타일이 작업 표시줄에 고정 되어 있는지 여부를 나타내는 부울 값을 반환 합니다.This method returns a boolean value that indicates whether your tile is now pinned to the taskbar. 타일이 이미 고정 된 경우 메서드는 기존 타일을 업데이트 하 고 true를 반환 합니다.If your tile was already pinned, the method updates the existing tile and returns true. 고정이 허용 되지 않거나 작업 표시줄이 지원 되지 않는 경우이 메서드는 false를 반환 합니다.If pinning wasn't allowed or taskbar isn't supported, the method returns false.

타일 열거Enumerate tiles

만든 모든 타일을 표시 하 고 (시작, 작업 표시줄 또는 둘 다) 어딘가에 계속 고정 하려면 FindAllAsync 를 사용 합니다.To see all the tiles that you created and are still pinned somewhere (Start, taskbar, or both), use FindAllAsync. 이후에 이러한 타일이 작업 표시줄에 고정 되어 있는지 또는 시작에 고정 되어 있는지 확인할 수 있습니다.You can subsequently check whether these tiles are pinned to the taskbar and/or Start. 서피스가 지원 되지 않는 경우 이러한 메서드는 false를 반환 합니다.If the surface isn't supported, these methods return 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
    }
}

타일 업데이트Update a tile

이미 고정 된 타일을 업데이트 하려면 보조 타일 업데이트에 설명 된 대로 UpdateAsync 메서드를 사용할 수 있습니다.To update an already pinned tile, you can use the SecondaryTile.UpdateAsync method as described in Updating a secondary tile.

타일 고정 해제Unpin a tile

타일이 현재 고정 되어 있는 경우 앱은 고정 해제 단추를 제공 해야 합니다.Your app should provide an unpin button if the tile is currently pinned. 타일의 고정을 해제 하려면 TryUnpinSecondaryTileAsync 를 호출 하 고 고정 해제 하려는 보조 타일의 TileId 을 전달 합니다.To unpin the tile, simply call TryUnpinSecondaryTileAsync, passing in the TileId of the secondary tile you would like unpinned.

이 메서드는 타일이 더 이상 작업 표시줄에 고정 되지 않는지 여부를 나타내는 부울 값을 반환 합니다.This method returns a boolean value that indicates whether your tile is no longer pinned to the taskbar. 타일이 처음에 고정 되지 않은 경우에도 true가 반환 됩니다.If your tile wasn't pinned in the first place, this also returns true. 고정이 허용 되지 않는 경우 false를 반환 합니다.If unpinning wasn't allowed, this returns false.

타일이 작업 표시줄에 고정 되어 있는 경우 더 이상 아무 곳에도 고정 되지 않으므로 타일이 삭제 됩니다.If your tile was only pinned to taskbar, this will delete the tile since it is no longer pinned anywhere.

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

타일 삭제Delete a tile

어디에서 나 (시작, 작업 표시줄) 타일의 고정을 해제 하려면 RequestDeleteAsync 메서드를 사용 합니다.If you want to unpin a tile from everywhere (Start, taskbar), use the RequestDeleteAsync method.

이는 사용자가 고정 한 콘텐츠가 더 이상 적용 되지 않는 경우에 적합 합니다.This is appropriate for cases where the content the user pinned is no longer applicable. 예를 들어 앱이 시작 및 작업 표시줄에 노트북을 고정 한 다음 사용자가 노트북을 삭제 하면 노트북에 연결 된 타일을 삭제 하기만 하면 됩니다.For example, if your app lets you pin a notebook to Start and taskbar, and then the user deletes the notebook, you should simply delete the tile associated with the 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();

시작에서만 고정 해제Unpin only from Start

작업 표시줄을 종료 하는 동안에만 보조 타일의 고정을 해제 하려는 경우 Startscreenmanager 메서드를 호출할 수 있습니다.If you only want to unpin a secondary tile from Start while leaving it on Taskbar, you can call the StartScreenManager.TryRemoveSecondaryTileAsync method. 이렇게 하면 타일이 더 이상 다른 표면에 고정 되지 않은 경우에도 삭제 됩니다.This will similarly delete the tile if it is no longer pinned to any other surfaces.

이 메서드는 타일이 더 이상 시작에 고정 되지 않는지 여부를 나타내는 부울 값을 반환 합니다.This method returns a boolean value that indicates whether your tile is no longer pinned to Start. 타일이 처음에 고정 되지 않은 경우에도 true가 반환 됩니다.If your tile wasn't pinned in the first place, this also returns true. 허용 되지 않음 또는 시작이 지원 되지 않는 경우 false를 반환 합니다.If unpinning wasn't allowed or Start isn't supported, this returns false.

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

리소스Resources