共用方式為


主要磚 API

注意

生活磚是較新版本 Windows 不支援的 Windows 10 功能。 針對新的應用程式,建議您遵循應用程式圖示的目前指引

主要磚 API 可讓您查看您的應用程式目前是否已釘選至 [開始],以及要求釘選您應用程式的主要磚。

重要

需要 Creators Update:您必須以 SDK 15063 為目標,並執行 Windows 10 組建 15063 或更新版本,才能使用主要磚 API。

重要 APIStartScreenManager 類別ContainsAppListEntryAsyncRequestAddAppListEntryAsync

使用主要磚 API 的時機

您非常努力地為應用程式的主要磚設計絕佳的體驗,現在有機會要求使用者將它釘選到 [開始]。 但在我們深入探討程序代碼之前,以下是您在設計體驗時要牢記的一些事項:

  • 務必在應用程式中製作不會干擾且容易關閉的 UX,並提供清楚的「釘選動態磚」行動號召。
  • 請先 清楚說明您 app 動態磚的值,再要求使用者釘選它。
  • 如果已釘選磚或裝置不支援磚,請勿要求使用者釘選應用程式的磚(詳細資訊如下)。
  • 不要 重複要求使用者釘選應用程式的磚(他們可能會惱火)。
  • 請勿在沒有明確使用者互動,或應用程式已最小化/未開啟的情況下,呼叫釘選 API。

查看 API 是否存在

如果您的應用程式支援舊版 Windows 10,您需查看這些主要磚 API 是否可用。 您可以使用 ApiInformation 執行這項操作。 如果主要磚 API 無法使用,請避免對 API 執行任何呼叫。

if (ApiInformation.IsTypePresent("Windows.UI.StartScreen.StartScreenManager"))
{
    // Primary tile API's supported!
}
else
{
    // Older version of Windows, no primary tile API's
}

查看 [開始] 是否支援您的應用程式

根據目前的 [開始] 功能表和您的應用程式類型而定,可能不支援將您的應用程式釘選到目前的 [開始] 畫面。 例如,IoT 或 Xbox 裝置不支援釘選到 \[開始\]。 因此,在顯示任何釘選 UI 或執行任何釘選程式碼之前,甚至需要先查看目前的 [開始] 畫面是否支援您的應用程式。 如果不支援,請勿提示使用者釘選磚。

// Get your own app list entry
// (which is always the first app list entry assuming you are not a multi-app package)
AppListEntry entry = (await Package.Current.GetAppListEntriesAsync())[0];

// Check if Start supports your app
bool isSupported = StartScreenManager.GetDefault().SupportsAppListEntry(entry);

查看目前是否已釘選

若要確認您的主要磚目前是否已釘選到 [開始],請使用 ContainsAppListEntryAsync 方法。

// Get your own app list entry
AppListEntry entry = (await Package.Current.GetAppListEntriesAsync())[0];

// Check if your app is currently pinned
bool isPinned = await StartScreenManager.GetDefault().ContainsAppListEntryAsync(entry);

釘選主要磚

如果您的主要磚目前未釘選,且 [開始] 支援您的磚,您可能希望提示使用者可釘選您的主要磚。

注意

您必須在應用程式位於前景時,從U I 執行緒呼叫此 API,而且只能在使用者有意要求釘選主要磚時呼叫此 API (例如,使用者對您的釘選磚提示按一下 [是] 之後)。

如果使用者按鍵以釘選主要磚,您可以呼叫 RequestAddAppListEntryAsync 方法來要求將磚釘選到 [開始]。 這時會顯示對話方塊,要求使用者確認他們想要將磚釘選到 [開始]。

這時會傳回布林值,代表您的磚現在是否已釘選到 [開始]。 如果您的磚已經釘選,這會立即傳回 true ,而不會向用戶顯示對話框。 如果使用者在對話框上按下 [否],或將磚釘選到 [開始] 不支援,這會傳回 false。 否則,使用者按兩下[是],並釘選磚,且 API 會傳回 true

// Get your own app list entry
AppListEntry entry = (await Package.Current.GetAppListEntriesAsync())[0];

// And pin it to Start
bool isPinned = await StartScreenManager.GetDefault().RequestAddAppListEntryAsync(entry);

資源