通用關閉

由雲端控制中心提供的「通用關閉」,表示當您從一部裝置關閉通知時,也會關閉其他裝置上的相同通知。

重要

需要年度更新:您必須以 SDK 14393 為目標,並執行 14393 版本或更新版本,才能使用「通用關閉」。

此案例的常見範例是行事曆提醒...您在兩個裝置上都有行事曆應用程式...您會在手機和桌面上收到提醒...您在桌面上按下關閉...由於「通用關閉」,手機上的提醒也會被關閉! 啟用「通用關閉」只需要一行程式碼!

Diagram of Universal Dismiss

在此案例中,關鍵事實是 相同的應用程式安裝在多個裝置上,這表示 每個裝置都已經收到通知。 行事曆應用程式是圖示範例,因為您通常會在 Windows 電腦和手機上安裝相同的行事曆應用程式,而且應用程式的每個執行個體都已在每個裝置上向您發送提醒。 藉由新增「通用關閉」的支援,相同提醒的執行個體可以跨裝置連結。

如何啟用「通用關閉」

啟用「通用關閉」對開發人員而言非常簡單。 只需要提供識別碼允許跨裝置連結每個通知,讓使用者從一部裝置關閉通知時,對應的連結通知也會從其他裝置關閉。

Universal dismiss RemoteId diagram

RemoteId:可唯一識別裝置間通知的識別碼。

只需要一行程式碼即可新增 RemoteId,啟用「通用關閉」的支援! 您可以決定如何產生 RemoteId,不過,您需要確保它跨裝置唯一識別您的通知,並且可以從在不同裝置上執行的應用程式的不同執行個體產生相同的識別碼。

例如,在我的作業計劃應用程式中,我透過指定其類型為「提醒」來產生 RemoteId,然後包含線上帳戶識別碼和作業項目的線上識別碼。 無論哪個裝置正在傳送通知,我都能一致地產生完全相同的 RemoteId,因為這些線上識別碼會跨裝置共用。

var toast = new ScheduledToastNotification(content.GetXml(), startTime);
 
// If the RemoteId property is present
if (ApiInformation.IsPropertyPresent(typeof(ScheduledToastNotification).FullName, nameof(ScheduledToastNotification.RemoteId)))
{
    // Assign the RemoteId to add support for Universal Dismiss
    toast.RemoteId = $"reminder_{account.AccountId}_{homework.Identifier}"
}
  
ToastNotificationManager.CreateToastNotifier().AddToSchedule(toast);

下列程式碼會在我的手機和桌面應用程式上執行,這表示這兩個裝置上的通知都會有相同的 RemoteId。

這就是您要做的! 當使用者關閉通知 (或按一下) 通知時,我們會檢查是否有 RemoteId,如果是,我們會在所有使用者的裝置上展開該 RemoteId 的關閉操作。

已知問題:透過 API 擷取 RemoteIdToastNotificationHistory.GetHistory()一律會傳回空字串,而不是您指定的 RemoteId。 別擔心,一切都正常運作 - 它只會擷取中斷的值。

注意

如果使用者或企業停用應用程式的通知鏡像 (或完全停用通知鏡像),則「通用關閉」將無法運作,因為雲端中沒有您的通知。

支援的裝置

由於年度更新版,Windows Mobile 和 Windows 桌面支援「通用關閉」。 「通用關閉」在電腦對電腦、電腦對手機和手機對手機之間都能運作。