タスク バーに、セカンダリ タイルをピン留め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.

2018 の年 10 月の更新プログラムが必要:17763 SDK をターゲットする必要があり、ビルド 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. ユーザーがタスク バーにセカンダリ タイルを「ピン留め」するかどうかを選択、ですが、アプリ内で固定できる領域は、開発者によって決まります。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

古いデバイスは、(以前のバージョンの Windows 10 を対象としている) 場合は、Api をピン留め、タスク バーに必要はありません。Older devices don't have the taskbar pinning APIs (if you're targeting older versions of Windows 10). そのため、これらのピン留め対応ではないデバイスに暗証番号 (pin) ボタンを表示しないでください。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. API の呼び出しに TaskbarManager.RequestPinSecondaryTileAsyncTaskbarManager.IsSecondaryTilePinnedAsync、および**TaskbarManager.TryUnpinSecondaryTileAsync** はアクセス拒否例外で失敗します。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

UWP アプリはさまざまなデバイスで実行できます。それらのすべてがタスク バーをサポートするとは限りません。UWP 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. タスク バーが現在存在するかどうかを確認するには、呼び出し、 TaskbarManager.GetDefault メソッドとインスタンスが返されることを確認が 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.

など、ピン留めすると、次回の別の操作を行う必要がある新しいインスタンスを取得し、1 つの操作の実行中のインスタンス上に保持することをお勧めします。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. TaskbarManager.IsPinningAllowedプロパティでは、ピン留めが許可されているかどうか確認することができます。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

ユーザーが、ピン留めする ボタンをクリックして、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. 読み取ることによってセカンダリ タイルのプロパティについて説明できる開始するセカンダリ タイルをピン留めします。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. それ以外の場合、例外がスローされます。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

使用することができます、既にピン留めされたタイルを更新する、 SecondaryTile.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 unpinned するセカンダリ タイルの。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

Everywhere (開始、タスク バー) からタイルの固定を解除する場合は、使用、 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. たとえば、アプリでは、開始、タスク バーで、ノートブックをピン留めすることができ、ユーザーが、notebook を削除し場合、は、ノートブックに関連付けられたタイルを簡単に削除する必要があります。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.TryRemoveSecondaryTileAsync メソッド。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