Share via


路由與標記運算式

標記運算式可讓您在透過通知中樞傳送推播通知時,指定特定的目標裝置或更明確的註冊。

鎖定特定的註冊

鎖定特定註冊的唯一方式是將它們與標記建立關聯,接著鎖定該標記。 一如 註冊管理中所述,若要接收推播通知,應用程式必須向通知中樞註冊裝置。 當在通知中樞建立註冊之後,應用程式後端便能傳送推播通知。

應用程式後端可以下列方式,選擇特定通知的目標註冊:

  1. 廣播:通知中樞中的所有註冊都會收到通知。

  2. 標記:所有包含指定標記的註冊都會收到通知。

  3. 標記運算式:所有標記設定符合指定運算式的註冊都會收到通知。

注意

傳送平台專屬的裝載 (例如,Windows 市集特定通知) 時,只有特定平台的註冊會收到通知。 傳送範本通知時,只會指定範本的註冊才會成為目標。 如需詳細資訊,請參閱 註冊管理

Tags

標記可以是任何字串,包括英數字元及下列非英數字元,且長度不得超過 120 個字元:‘_’、‘@’、‘#’、‘.’、‘:’、‘-’。 下列範例示範的應用程式可以讓您從中接收有關特定音樂群組的快顯通知。 在此案例中,一個簡單路由通知的方法是為註冊加上標記,以指出不同的樂團,如下列圖片所示。

Tag Expressions

在此圖中,有 Beatles 標記的訊息只會出現在以 Beatles 標記註冊的 tablet。

如需為標記建立註冊的詳細資訊,請參閱 註冊管理

您可以使用 SDK 中Microsoft.ServiceBus.Notifications.NotificationHubClient類別的傳送通知方法,將通知傳送至標記。 您也可以使用Node.js或 推播通知 REST API

請注意下列範例:

await hub.SendWindowsNativeNotificationAsync(wnsToast, "tag");
notificationHubService.wns.sendToastText01('tag', {
            text1: 'Hello World!'
        }, callback);

標記無須事先佈建,而且可以參考多個應用程式特有的概念。 例如,此範例應用程式的使用者可能想要對所有樂團發表評論,但不想只收到他們評論及喜愛之樂團的快顯通知,也想要收到來自他們朋友之所有評論的快顯通知。 下圖顯示此案例的範例:

Tag Expressions

在此圖片中,Alice 關注的是 Beatles 的最新動態,Bob 關注的是 Wailers 的最新動態。 Bob 也會關注 Charlie 的評論,而 Charlie 則會關注 Wailers。 當 Charlie 對 Beatles 發表評論時,Alice 與 Bob 都會收到該通知。

重要

雖然您可以編碼標記中的多個主題 (例如 "band_Beatles" 或 "follows_Chanrlie"),但標記只是簡單字串而不是具有值的屬性。 只有在指定有特定標記或未指定特定標記時,才會比對註冊。

如何使用標記傳送到您所關注之群組的完整逐步教學課程,請參閱 即時新聞

注意

在先前的範例中,您應該傳送單一通知給兩個標記 (藉由提供標記陣列,或搭配使用標記運算式和 OR),而不是兩個通知。 傳送兩個通知給個別標記會導致有兩個標記的註冊重覆,而使用標記運算式則不會。

使用標記鎖定使用者

另一種使用標記的方法,是指定特定使用者的所有裝置。 註冊可以加上包含使用者識別碼的特殊標記,如圖所示:

Tag Expressions

在此圖中,將訊息標記為 alice 可到達標記為 uid:Alice 的所有註冊;也就是 Alice 的所有裝置。

標記運算式

在有些情況下,通知的目標是一組註冊,而這些註冊又不是以單一標記識別,而須透過標記上的布林運算式。

假設有一支運動應用程式會將提醒傳送給波士頓的每個人,告知他們有關於紅襪隊與紅雀隊之間的賽事訊息。 若用戶端應用程式註冊關於球隊與地點的標記,則通知的目標應為波士頓中位關注紅襪隊或紅雀隊的每個人。 此條件可以下列布林運算式表示:

(follows_RedSox || follows_Cardinals) && location_Boston

Tag Expressions

標籤運算式可以包含所有布林運算子,例如 AND () && 、OR (||) 和 NOT (!) 。 其也可包含括號。 標記運算式若只含 OR,最多可有 20 個標記,否則只可有 6 個標記。

您可以使用 SDK 中Microsoft.ServiceBus.Notifications.NotificationHubClient類別的傳送通知方法,將通知傳送至標記運算式。 您也可以使用Node.js或 推播通知 REST API。 請注意下列範例:

await hub.SendWindowsNativeNotificationAsync(wnsToast, "(tagA && !tagB)");
notificationHubService.wns.sendToastText01('(tagA && !tagB)', {
            text1: 'Hello World!'
        }, callback);

另請參閱

其他資源

API 參考
即時新聞教學課程
傳送通知給使用者教學課程