朋友圈通知
重要
Windows 11 和已套用 KB5034203 的 Windows 10 版本不再支援朋友圈。
朋友圈通知為使用者提供了新的方式,可透過快速的表達手勢,與他們關心的對象聯繫。 本文說明如何在應用程式中設計和實作朋友圈通知。 如需完整的實作,請參閱朋友圈通知範例。
需求
- Windows 10 與 Microsoft Visual Studio 2019 或更新版本。 如需安裝的詳細資料,請參閱開始設定 Visual Studio。
- C# 或類似物件導向程式設計語言的基本知識。 若要開始使用 C#,請參閱建立 "Hello, world" 應用程式。
運作方式
作為一般快顯通知的其他選擇,您現在可以透過 [朋友圈] 功能傳送通知,為使用者提供更個人化的體驗。 這是一種新的快顯通知,透過 [朋友圈] 功能,從使用者工作列表上釘選的連絡人送出。 收到通知時,寄件者的連絡人照片會在工作列中產生動畫效果,聲音也會播放,表示通知正在啟動。 承載中指定的動畫或影像會顯示 5 秒 (或者,如果承載的動畫長度少於 5 秒,則會循環播放到超過 5 秒)。
支援的影像類型
- GIF
- 靜態影像 (JPEG、PNG)
- Spritesheet (僅限垂直)
注意
Spritesheet 是衍生自靜態影像的動畫 (JPEG 或 PNG)。 個別畫面會垂直排列,讓第一個畫面位於頂端 (雖然您可以在快顯通知承載中指定不同的起始畫面)。 每個畫面必須具有相同的高度,程式會從頭到尾循環來建立動畫序列 (像是一本垂直版面頁的手翻書)。 Spritesheet 的範例如下所示。
通知參數
朋友圈通知會使用快顯通知架構,但在快顯通知承載中需要額外的繫結節點。 第二個繫結必須包含下列參數:
experienceType="shoulderTap"
這表示快顯通知應該被視為朋友圈通知。
繫結內的影像節點應該包含下列參數:
- src
- 資產的 URI。 這可以是 HTTP/HTTPS Web URI、msappx URI,或是本機檔案的路徑。
- spritesheet-src
- 資產的 URI。 這可以是 HTTP/HTTPS Web URI、msappx URI,或是本機檔案的路徑。 只有 spritesheet 動畫需要。
- spritesheet-height
- 畫面高度 (以像素為單位)。 只有 spritesheet 動畫需要。
- spritesheet-fps
- 每秒畫面格數 (FPS)。 只有 spritesheet 動畫需要。 僅支援值 1 至 120。
- spritesheet-startingFrame
- 動畫要開始的畫面編號。 僅使用在 Spritesheet 動畫,如果未提供,則預設為 0。
- alt
- 供螢幕助讀程式旁白使用的文字字串。
注意
製作動畫通知時,您仍然應該在 "src" 參數中指定靜態影像。 如果動畫無法顯示,則會以它作為備用顯示方式。
此外,最上層的快顯通知節點必須包含 hint-people 參數,以指定寄件連絡人。 此參數可以是以下任何值:
- 電子郵件地址
- 例如
mailto:johndoe@mydomain.com
- 例如
- 電話號碼
- 例如 888-888-8888
- 遠端識別碼
- 例如 remoteid:1234
注意
如果您的應用程式使用 ContactStore API 也使用 StoredContact.RemoteId 屬性,將儲存在 PC 上的連絡人與遠端儲存的連絡人彼此連結,則 RemoteId 屬性的值必須是穩定且唯一的值。 這表示遠端識別碼必須一致地識別單一使用者帳戶,而且應該包含唯一標籤,以確保它不會與 PC 上其他連絡人的遠端識別碼衝突,包括其他應用程式所擁有的連絡人。 如果應用程式所使用的遠端識別碼無法保證是穩定且唯一的值,您可以使用 RemoteIdHelper 類別,以便在您將所有遠端識別碼新增至系統之前,將唯一標籤新增至這些遠端識別碼。 或者,您也可以選擇完全不使用 RemoteId 屬性,而是建立自訂擴充屬性,以儲存連絡人的遠端識別碼。
除了第二個繫結和承載之外,您還必須在第一個繫結中包含另一個承載,以供備用快顯通知使用。 如果通知被迫還原為一般快顯通知,將會使用此通知 (在本文結尾進一步說明)。
建立通知
您可以建立朋友圈通知範本,就像快顯通知那樣。
以下是如何使用靜態影像承載來建立朋友圈通知的範例:
<toast hint-people="mailto:johndoe@mydomain.com">
<visual lang="en-US">
<binding template="ToastGeneric">
<text hint-style="body">Toast fallback</text>
<text>Add your fallback toast content here</text>
</binding>
<binding template="ToastGeneric" experienceType="shoulderTap">
<image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-static-payload.png"/>
</binding>
</visual>
</toast>
當您啟動通知時,它看起來應該像這樣:
以下是如何使用動畫 Spritesheet 承載建立通知的範例。 此 Spritesheet 的畫面高度為 80 像素,我們將以每秒 25 個畫面來播放動畫。 我們將起始畫面設定為15,並在 “src” 參數中提供靜態備用影像。 如果 spritesheet 動畫無法顯示,則會使用備用影像。
<toast hint-people="mailto:johndoe@mydomain.com">
<visual lang="en-US">
<binding template="ToastGeneric">
<text hint-style="body">Toast fallback</text>
<text>Add your fallback toast content here</text>
</binding>
<binding template="ToastGeneric" experienceType="shoulderTap">
<image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-static.png"
spritesheet-src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-spritesheet.png"
spritesheet-height='80' spritesheet-fps='25' spritesheet-startingFrame='15'/>
</binding>
</visual>
</toast>
當您啟動通知時,它看起來應該像這樣:
啟動通知
若要啟動朋友圈通知,我們需要將快顯通知範本轉換成 XmlDocument 物件。 當您在 XML 檔案 (這裡名為 "content.xml") 中定義快顯通知時,您可以使用此程式碼來啟動它:
string xmlText = File.ReadAllText("content.xml");
XmlDocument xmlContent = new XmlDocument();
xmlContent.LoadXml(xmlText);
然後,您可以使用此程式碼來建立並傳送快顯通知:
ToastNotification notification = new ToastNotification(xmlContent);
ToastNotificationManager.CreateToastNotifier().Show(notification);
回復為快顯通知
在某些情況下,朋友圈通知會改成顯示一般快顯通知。 在下列情況下,朋友圈通知會回復為快顯通知:
- 通知無法顯示
- 收件者未啟用朋友圈通知
- 寄件者的連絡人未釘選到收件者的工作列
如果朋友圈通知回復為快顯通知,則會忽略第二個朋友圈專用繫結,並只使用第一個繫結來顯示快顯通知。 這就是為什麼在第一個快顯通知繫結中提供備用承載非常重要。