路由和標記表達式
標記表達式可讓您在透過通知中樞傳送推播通知時,以特定裝置集或更具體的方式註冊為目標。
以特定註冊為目標
以特定註冊為目標的唯一方法是將它們與標記產生關聯,然後將該標記設為目標。 如 註冊管理中所述,為了接收推播通知,應用程式必須註冊通知中樞上的裝置句柄。 在通知中樞上建立註冊之後,應用程式後端就可以傳送推播通知給它。
應用程式後端可以使用下列方式,選擇以特定通知為目標的註冊:
廣播:通知中樞中的所有註冊都會收到通知。
標籤:包含指定標籤的所有註冊都會接收通知。
標記表示式:所有標記集符合指定表達式的註冊都會收到通知。
注意
傳送平臺特定承載時(例如 Windows 市集特定通知),只有該特定平台的註冊會收到通知。 傳送範本通知時,只會將指定範本的註冊設為目標。 如需詳細資訊,請參閱 註冊管理。
標籤
卷標可以是任何字串,最多 120 個字元,其中包含英數位元和下列非英數位元:'_'、'@'、'#'、'.'、':'、'-'。 下列範例顯示應用程式,您可以從中接收特定音樂群組的快顯通知。 在此案例中,路由通知的簡單方式是使用代表不同波段的標籤註冊,如下圖所示。
在此圖片中,標
如需建立標籤註冊的詳細資訊,請參閱 註冊管理。
您可以使用 SDK 中
請注意下列範例:
await hub.SendWindowsNativeNotificationAsync(wnsToast, "tag");
notificationHubService.wns.sendToastText01('tag', {
text1: 'Hello World!'
}, callback);
標記不需要預先布建,而且可以參考多個應用程式特定概念。 例如,此範例應用程式的使用者可以評論樂隊,並想要接收快顯通知,不僅針對他們最愛的樂隊的評論,也針對他們朋友的所有評論,無論他們評論的樂隊為何。 下圖顯示此案例的範例:
在此圖片中,Alice 對披頭士樂隊的更新感興趣,Bob 對威勒隊的更新感興趣。 鮑勃也對查理的評論感興趣,查理對威勒人感興趣。 當針對查理對披頭士樂隊的評論傳送通知時,Alice 和 Bob 都會收到通知。
重要
雖然您可以在標記中編碼多個考慮(例如,“band_Beatles”或“follows_Chanrlie”),標記是簡單的字串,而不是具有值的屬性。 只有在存在或沒有特定標籤時,才會比對註冊。
如需如何使用標籤傳送至興趣群組的完整逐步教學課程,請參閱 突發新聞。
注意
在上一個範例中,您應該將單一通知傳送至兩個標記(提供標記數位,或搭配 OR 使用標籤標運算式),而不是兩個通知。 將兩個通知傳送至個別標記會導致具有兩個標籤的註冊重複,而使用標籤表示式則不會。
使用標記將用戶設為目標
另一種使用標籤的方式是識別特定使用者的所有裝置。 註冊可以標記包含使用者標識碼的標記,如下圖所示:
在此圖片中,標記 uid:Alice 的訊息會到達已標記 uid:Alice的所有註冊;因此,Alice 的所有裝置。
標記表達式
在某些情況下,通知必須以一組註冊為目標,這些註冊不是由單一標記所識別,而是透過標記上的布爾表達式來識別。
請考慮一個運動應用程式,向波士頓的每個人發送一個提醒,關於紅襪隊和紅衣主教之間的遊戲。 如果用戶端應用程式註冊有關小組和位置興趣的標籤,則通知應針對波士頓的每個人,他們有興趣使用 Red Sox 或紅衣主教。 此條件可以使用下列布爾表示式來表示:
(follows_RedSox || follows_Cardinals) && location_Boston
標記表達式可以包含所有布爾運算符,例如 AND (&&)、OR (||)和 NOT (!)。 它們也可以包含括號。 如果標籤表示式只包含 OU,則標籤表示式限製為 20 個標籤;否則,它們限製為6個標籤。
您可以使用 SDK 中
await hub.SendWindowsNativeNotificationAsync(wnsToast, "(tagA && !tagB)");
notificationHubService.wns.sendToastText01('(tagA && !tagB)', {
text1: 'Hello World!'
}, callback);