Windows 10 特刊 2015

第 30 卷,第 11 期

本文章是由機器翻譯。

通知 - Windows 10 中彈性且互動式的通知

Thomas Fennel |Windows 2015

開發人員的工具箱影響使用者參與的一些工具,例如通知。它們是否普及到經驗內的作業系統、 Windows mobile、 Windows 桌面、 Xbox 或甚至是 HoloLens。沒有通知提供給使用者無可否認的誘惑。從協助完成工作例如回覆郵件,提供簡單且即時的資訊如頭條新聞和即使它們沒有料想到經驗 delighting 它們 — 例如 Cortana 提醒您 — 通知提供給使用者的值和投入您的應用程式。

什麼是 Windows 中的通知?

通知代表廣的整個作業系統的使用者活動。從使用者的觀點來看,通知會顯示許多經驗。

方塊是最圖示格式的 Windows 作業系統的通知。您可以看到並排顯示在 [開始] 畫面上的 Windows 桌面和行動裝置和各種型態出現在其他外型規格和裝置類型。並排顯示為使用者提供數個優點。

首先,它們可以快速啟動應用程式使用主要磚 — 這些都是您從釘選應用程式清單直接到 [開始接觸和保存或以滑鼠右鍵按一下清單中的應用程式磚。它們也可當做直接取得內容的方法內使用次要磚在應用程式 — 這些都是開發人員可以從應用程式內的使用者同意以程式設計方式釘選的磚。

可說是更重要的是磚能夠藉由提供從應用程式內的內容方塊本身,透過動態磚上提供的客戶業務開發。這些可讓您連線到使用者沒有它們實際啟動您的應用程式 — 氣象預報和您最愛的團隊的運動成績的標準範例。快速地在 [開始] 功能表上的同一個地方取得該資訊可以取悅使用者。

快顯通知是畫面的行動裝置的上方或桌面右下方快顯通知。它們防止搜尋投入啟動應用程式的使用者的通知。在 Windows 10 之前點選快顯通知只能啟動使用者到應用程式與開發人員在建立通知時無法設定某些靜態引數。此外,Windows 10 之前沒有行動通知的警示和提醒建立更大的強制回應對話方塊具有回應之前執行其他任何工作的使用者呼叫。這兩個類似於快顯通知,而且它們已經已摺疊為類別目錄的呼叫動作所需快顯通知的通知。

徽章是通知的最終類型。您多半是所在的位置通常應用程式中遺漏的項目計數鎖定畫面上看到徽章。有時候它們代表狀態的小圖像或者 — 想像成一個驚嘆號或類似。徽章也會在主要和次要磚上表示。

如果沒壞修理,不修正

當我們開始設計彈性和互動式通知時,我們已 feverishly 受到我們聽到有關之狀態的通知 Windows Phone 和 Windows 8 開發人員社群的意見反應。我們不想只因為建立新項目...我們所有一生移動過而且它是如何我們最後會有這類通知技術、 基礎結構和 Windows Phone 和 Windows 桌面之間的開發人員模型之間很大的不同。反而 Windows 10 我們著重於開發人員喜歡有關兩種平台的現有通知架構以及承諾要進行所需,而不是單純試圖完全脫離我們舊版。由於不只我們啟動 Windows 10 是有趣的時間,我們也已將 Windows Phone 和 Windows 小組整合到一個平台小組。這項轉換期間它不一定容易採用這種 principled 方法,但是我們知道它是結合這兩個后,righteous 和結果 — 彈性和互動式通知 — 代表"一個 Microsoft"方法。

磚與快顯範本類別目錄不會調整

那麼要如何開發人員會設計這些磚與快顯通知的通知? 舊版的 Windows 必須一連串較不具彈性的範本我們放入磚和快顯範本類別目錄。這些範本允許開發人員輕鬆且廉價地建立與 Windows 設計語言視覺上一致的通知。不過,若要建立映像及開發人員可能會想要的文字設定的所有可能的排列組合,我們最後會有數百個幾乎完全相同的範本。

[圖 1 是我們提供的 Windows Phone 8.1 和 Windows 8.1 的並排顯示目錄的取樣。Text01 是單行文字換行。Text02 是四個不同的行的非換行文字。Text03 是單行文字換行的標頭。Text04 是具有三個非包裝文字行的標頭。這些清楚地將不會縮放為開發人員可能會想要每一種組合。

從磚範本的四個範本類別目錄提供僅有些微的不同樣式和配置
[圖 1 的磚範本的四個範本類別目錄提供僅有些微的不同樣式和配置

例如,如果您需要兩行文字換行吗? 不幸的是,讓您正在使用映像專用的範本和轉譯自訂點陣圖告訴不屬於類別目錄。但是這樣會造成模糊不清文字時調整到不同的解析度高得多的資料使用狀況產生點陣圖中的背景工作時從定域機組,和效能的影響及某種下載時。

因為其實只有兩種樣式,快顯通知的更多問題。有八個範本技術上來說,但他們進入快顯通知使用映像或映像,而快顯中所示 [圖 2。開發人員所提供的意見反應指出不只是版面配置的快顯通知不具備足夠的彈性,甚互動式甚至以簡單的方式。具有文字的適當數量的快顯通知 — 說出三或四個線條 — 無法取用輕鬆地在小螢幕上因為我們只顯示文字的前兩行最多。例如能夠展開以顯示更多的內容通知甚至基本互動性不是採用現有的架構。

從快顯範本類別目錄的兩個範本


[圖 2 從快顯通知範本的兩個範本類別目錄

並非每個開發人員想 (或可負擔) 若要建立豐富的通知

因為設計、 開發和測試自訂繪製例如動態磚通知是困難且成本範本來解決重大的問題。在各種外型規格和螢幕密度執行我們通知的平台和我們支援五個不同的並排顯示大小和兩個快顯通知的大小都是必須為自訂設計、 開發和測試。範本可以減輕這樣的掙扎因為想要建立我們範本語言能容納的通知開發人員受益最少的開發成本和幾乎零測試成本,而且我們帶確定到所有螢幕看起來美美的負擔。

開發人員不必擔心邊界、 邊框距離、 字型大小或粗。他們可以建立美觀且一致與我們的語言項目貼上一些 xml 並變更一些 < 文字 > 屬性。

在相同的時間沒有功能強大的需要提供有彈性的開發人員能夠整合自己的商標。開發人員經常在建立獨特的外觀及建置吸引使用者品牌的時間與金錢。反白顯示該品牌就是工作的我們中心宗旨。

這代表什麼範本?

Windows 10 中的範本有效地提供只有一個主要的用途: 針對特定的並排顯示大小。在 Windows 10 桌面和行動裝置中,我們有小型、 中型和寬的方塊。在 [桌面我們也會有額外的大小為大型的方塊。我們把這些磚以邏輯的 4-units-wide-by-4-units-high 方格。小型的磚上該方格佔用 1x1 單位 — 小方塊,真的 — 因此小型的名稱。中型磚會佔用該方格中或中等方形上的 2x2 單位。感應趨勢嗎? 寬方塊是在方格中的 4 x 2 單位和大型方塊是完整的 4 x 4 單位。

我們已在設計時自動調整和互動式通知,我們認為我們無法進行摺疊類別目錄來只是大小的重要樞紐許多。我們最後卻只有四個圖格的範本 — TileSmall、 TileMedium、 TileWide 和 TileLarge — 和一個快顯通知範本: ToastGeneric。在未來我們希望將其摺疊進一步有 TileGeneric 範本內容的位置之間所有的磚大小相同的案例。然後開發人員可以只針對其方塊提供一個範本。

在舊版的 Windows 中,範本也會提供定義整個介面動畫的特性。並排顯示具有動畫來顯示影像循環執行它的集合會有它自己的範本。同樣地,若要顯示的縮圖一次建立動畫及淡入集合所需的磚需要另一個範本。現在動畫也會處理透過新的提示-* 我們將介紹,我將在稍後的屬性。

即使有了所有的我們將不會淘汰舊範本類別目錄。如果開發人員會升級到新通用 Windows 平台 (UWP) Windows 10 中而不需要變更伺服器或用戶端程式碼建構其通知,仍能運作大上 Windows 10 行動和桌面應用程式。事實上,一些先前不一致或完全之間運作行動和桌面現在運作良好。例如,正確使用任何 ToastImageAndText0 * 範本在 Windows Mobile 10 會顯示映像位置因此先前已省略的通知中。

自動調整和互動式通知

在 Windows 10 我們發展通知故事藉由引進三項主要功能提供更豐富的開發人員經驗和 UX。

第一個是自動調整圖格/快顯通知,可提供彈性的結構描述產生視覺效果更豐富的通知,並讓它們彈性出現跨不同的外型規格。

第二個是互動式快顯通知,這種方式可讓使用者可以啟用應用程式而要求使用者從目前工作的內容切換執行快速的動作或內嵌回覆通知內建立簡單的互動快顯通知。

第三個是要讓應用程式來訂閱有關快顯通知歷程記錄變更事件讓應用程式可以在自己的快顯通知由系統或使用者處理時才收到通知。基本上這是特定方式來瞭解其行動作業中心內的應用程式已變更的內容。

自動調整的動態磚和動作中的彈性和互動式快顯通知

我將示範如何建置展示重要層面的磚和快顯通知使用真實世界案例的典型專案使用新的彈性和互動式通知。具體來說,我稍後會說明您可以使用電子郵件應用程式中的新通知的類型。

我會先與您的電子郵件應用程式的方塊。根據您要如何建立方塊本身,透過您主要的並排顯示的應用程式資訊清單或次要磚的 Api,我們還沒有做了任何重大變更 Windows 10 版本中,因此我不打算深入進行這些作業,因為它已經很清楚。定義磚與快顯配置是使用語意的 XML 結構描述通常稱為通知裝載。其實什麼我將著重在圖格的是如何建立使用新的視覺效果更豐富的圖格體驗磚範本和對應的 XML 內容。

我要建立新的電子郵件通知會顯示使用者彈性的磚通知。吸引使用者的好方法是文字的讓他們的自從上次他們開啟結合的應用程式與其訊息已從新的訊息計數和幾行程式的電子郵件本文中。[圖 3 顯示看起來如下桌面上 Windows 10 的所有四個大小。

小型、 中型 Windows 10 桌面上的寬度和大型磚
[圖 3 小、 中、 Windows 10 桌面上的寬度和大型磚

[圖 4 描述代表在磚的通知裝載 [圖 3

圖 4] 來建立中型的自動調整圖格 XML 裝載

<binding template="TileMedium" branding="logo">
  <group>
    <subgroup>
      <text hint-style="caption">Matt Hidinger</text>
      <text hint-style="captionsubtle">Photos from our trip</text>
      <text hint-style="captionsubtle">Check out these awesome photos
        I took while in New Zealand!</text>
    </subgroup>
  </group>
  <text />
  <group>
    <subgroup>
      <text hint-style="caption">Lei Xu</text>
      <text hint-style="captionsubtle">Build 2015 Dinner</text>
      <text hint-style="captionsubtle">Want to go out for dinner after
        Build tonight?</text>
    </subgroup>
  </group>
</binding>

一些有趣的事情必須来注意在 [圖 4

首先,只顯示中型並排顯示因為的確很長的四種規模的 XML 所示 TileMedium 繫結的內容。若要重現] 所示的所有圖格 [圖 3, ,您需要冒著非常類似內容也使用 TileSmall、 TileWide 和 TileLarge 範本。您可以將所有這些繫結匯出到一個通知裝載。

第二,還有更多的內容中的實際通知不會顯示在磚上。您可以看到這兩個不同的 < 群組 > 和 < 子群組 > 標記所表示。為什麼會這樣? 因為這張牌可以顯示在多個螢幕密度,因此我包含了詳細資訊以防它取得可以顯示更多的內容高密度螢幕上顯示。< 群組 > 子 < 群組 > 標籤可以協助系統知道將內容保持在一起在語意上讓事情不被切掉奇怪 — 它是您的方式來描述您想要盡可能保持在一起的資訊的 「 單位 」。

要注意的第三件事是裝載在溢出本身的文字項目。這實際上如何指定簡單的空白行,您可以看到在大型方塊範例。

最後的提示-* 先前所述的項目可以看到此內容中。這些都是我們將介紹可協助您執行作業,例如簡單的文字樣式中所示的新彈性的一個重要部分 [圖 5。各種提示可讓您指定影像的不透明度等項目、 基本資料相片應該裁剪與偶數的方式如何建立特定動畫方塊上的項目為目標的案例。可用的提示及其他並排顯示詳細資料的更多有關位在 MSDN 部落格網址 bit.ly/1NYvsbw

在左側高密度螢幕右邊與低螢幕上的中度磚
[圖 5 左邊的低高密度螢幕右邊與螢幕上的中型磚

若要進一步說明有關的資訊密度點 [圖 5 是從裝載的範例 [圖 4 高密度螢幕與低螢幕上顯示。我知道它看起來像是中型方塊旁邊的大型的磚但事實上它是在低螢幕通常位於較低價格與高密度螢幕旗艦電話上找到電話上的中度磚的表示法。

現在我要移至第二個有趣和更吸引人的作法,這次是使用自動調整和互動式快顯通知。同樣地,如同並排顯示應用程式開發介面不在您建立的快顯通知程式和快顯通知物件的方式已經變更快顯通知應用程式開發介面中。就像圖格這裡的接觸是您可以使用這些 Api 的裝載。

您可以建立快顯通知會顯示當收到新的電子郵件並提供給使用者一些 instant gratification 的這兩個幾行文字從電子郵件和幾個簡單快速動作本身的電子郵件。兩個最常進行的操作人員的電子郵件是項目標記為已讀取,所以他們不需要注意它一次更新版本中,查看其訊息清單並立即刪除郵件時。在 Windows 10 桌面上這樣的快顯通知看起來像 [圖 6

自動調整和互動式快顯通知可能會看到使用電子郵件應用程式
[圖 6 彈性和互動式快顯通知可能會看到使用電子郵件應用程式

中的 XML [圖 7 會產生通知中顯示 [圖 6

[圖 7 彈性和互動式快顯通知可能會看到使用電子郵件應用程式

<toast>
  <visual>
    <binding template="ToastGeneric">
      <text>Andrew Bares</text>
      <text>Ideas for blog posts and the template visualizer.</text>
      <text>Hey guys, I've got some great ideas for the blog and
        some feature ideas for the...</text>
      <image placement="AppLogoOverride" hint-crop="circle" src="AndrewBares.png" />
    </binding>
  </visual>
  <actions>
    <action activationType="background" content="Mark Read" arguments="read" />
    <action activationType="background" content="Delete" arguments="delete" />
  </actions>
  <audio src="ms-winsoundevent:Notification.Mail"/>
</toast>

與磚通知裝載我前面所說,有一些有趣的新東西来注意在從快顯通知裝載 [圖 7, 、 以及。

首先,不同於先前的範本,您可以自由地指定文字項目而且就不用將其本身的識別碼。我建立了三行文字快顯通知中使用三個不同的文字項目。

第二,請注意第一行文字是粗體,而不是所有後續的行。現在,您不能使用所有的提示-* 讓此文字樣式會一律套用至快顯通知直到未來的版本,我們更多提示和樣式啟用快顯通知,也可用在快顯通知,磚通知上的文字樣式。不過,您可以使用一些提示。比方說,請注意這裡運作提示裁剪屬性和我的映像來取代應用程式標誌會通常出現裁剪 Andrew 是不錯的圓形使用它搭配使用可讓我 AppLogoOverride 放置屬性顯示的影像。可用的提示及其他快顯通知的詳細資料的更多有關位在 MSDN 部落格網址 bit.ly/1N3o7GY

最後,在裝載的 [動作] 區段中,請注意如何有電子郵件與執行所使用的共同工作人員的個別動作項目建立的兩個按鈕。引數是什麼應用程式時會收到按下按鈕和應用程式會叫用。在此情況下,我使用背景的 activationType 因為我想要處理這些動作在應用程式的背景工作。或者,您可以有 activationType 的前景如果您想要啟動應用程式以完成動作或通訊協定 activationType 如果您想要叫用的網站或透過標準通訊協定啟動應用程式-應用程式通訊。

既然我已經建立顯示通知所需的 XML 內容,我需要處理這個互動式的快顯通知的使用者所採取的動作。

若要啟動,因為我選擇 activationType 的背景,我必須我可以在其中執行程式碼的背景工作。這項工作需要 Package.appxmanifest,應用程式中宣告中所示 [圖 8

宣告背景工作處理 Package.appxmanifest 中的互動式快顯通知動作
[圖 8 宣告背景工作處理 Package.appxmanifest 中的互動式快顯通知動作

然後,一旦在 Package.appxmanifest 中登錄工作時,您可以加入程式碼您實際處理使用者動作的背景工作。在 [圖 9 您可以看到您加入您自己的程式碼來處理動作的地方簡單的虛設常式。

[圖 9 控制代碼引數或背景工作的使用者輸入

namespace Tasks
{
  public sealed class ToastHandlerTask : IBackgroundTask
  {
    public void Run(IBackgroundTaskInstance taskInstance)
    {
      // Retrieve and consume the pre-defined arguments and user inputs here.
      var details = taskInstance.TriggerDetails as NotificationActionTriggerDetails;
      var arguments = details.Arguments;
      // Handle either marking the mail as read or deleting it from the database.
    }
  }
}

現在您已經可以動態程式磚上顯示視覺效果豐富的內容及參與的應用程式快速其大部分的使用者通常所需的快顯通知的動作。您的應用程式更實用且可愛的使用者,並可以快速取得新的資訊並不需要內容切換到您的應用程式從目前工作互動與您的經驗。我們期待您將執行和由衷地希望得到更好的使用者參與的彈性和互動式通知 Windows 10 中令人讚嘆的事情。


Thomas Fennel是首席程式經理會導致在 Microsoft Windows 開發人員生態系統與平台部門。與他連絡 tfennel@microsoft.com

感謝以下的微軟技術專家對本文的審閱: Andrew Bares Matt Hidinger 和 Lei Xu
Andrew Bares 是專精於 microsoft windows 應用程式開發的專案經理。

Lei Xu 是經理 II 負責在 Microsoft 的快顯通知和動作 center 平台。

Matt Hidinger 是負責 microsoft 磚通知的平台的資深專案經理。