朋友圈通知

重要

Windows 11 和已套用 KB5034203 的 Windows 10 版本不再支援朋友圈。

朋友圈通知為使用者提供了新的方式,可透過快速的表達手勢,與他們關心的對象聯繫。 本文說明如何在應用程式中設計和實作朋友圈通知。 如需完整的實作,請參閱朋友圈通知範例

heart emoji notification

需求

運作方式

作為一般快顯通知的其他選擇,您現在可以透過 [朋友圈] 功能傳送通知,為使用者提供更個人化的體驗。 這是一種新的快顯通知,透過 [朋友圈] 功能,從使用者工作列表上釘選的連絡人送出。 收到通知時,寄件者的連絡人照片會在工作列中產生動畫效果,聲音也會播放,表示通知正在啟動。 承載中指定的動畫或影像會顯示 5 秒 (或者,如果承載的動畫長度少於 5 秒,則會循環播放到超過 5 秒)。

支援的影像類型

  • GIF
  • 靜態影像 (JPEG、PNG)
  • Spritesheet (僅限垂直)

注意

Spritesheet 是衍生自靜態影像的動畫 (JPEG 或 PNG)。 個別畫面會垂直排列,讓第一個畫面位於頂端 (雖然您可以在快顯通知承載中指定不同的起始畫面)。 每個畫面必須具有相同的高度,程式會從頭到尾循環來建立動畫序列 (像是一本垂直版面頁的手翻書)。 Spritesheet 的範例如下所示。

rainbow 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
  • 電話號碼
  • 遠端識別碼
    • 例如 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>

當您啟動通知時,它看起來應該像這樣:

static image notification

以下是如何使用動畫 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>

當您啟動通知時,它看起來應該像這樣:

spritesheet notification

啟動通知

若要啟動朋友圈通知,我們需要將快顯通知範本轉換成 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);

回復為快顯通知

在某些情況下,朋友圈通知會改成顯示一般快顯通知。 在下列情況下,朋友圈通知會回復為快顯通知:

  • 通知無法顯示
  • 收件者未啟用朋友圈通知
  • 寄件者的連絡人未釘選到收件者的工作列

如果朋友圈通知回復為快顯通知,則會忽略第二個朋友圈專用繫結,並只使用第一個繫結來顯示快顯通知。 這就是為什麼在第一個快顯通知繫結中提供備用承載非常重要。

另請參閱