共用方式為


路由與標記運算式

概觀

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

指定特定的註冊

指定特定通知註冊的唯一方法,就是關聯標記與註冊,然後再指定這些標記。 如註冊管理中所述,若要接收推播通知,則應用程式必需在通知中樞註冊裝置控制代碼。 當應用程式在通知中樞建立註冊之後,應用程式後端便能向其傳送推播通知。 應用程式後端可以下列方式,選擇特定通知的目標註冊:

  1. 廣播:通知中樞中的所有註冊都會收到通知。
  2. 標記:所有包含指定標記的註冊都會收到通知。
  3. 標記運算式:所有標記設定符合指定運算式的註冊都會收到通知。

標籤

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

Tags overview

在此圖片中,標記 Beatles 的訊息只會觸達以 Beatles 標記註冊的平板電腦。

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

您可以使用將通知傳送給 Microsoft Azure 通知中樞 SDK 中之 Microsoft.Azure.NotificationHubs.NotificationHubClient 類別的方法,將通知傳送給標記。 您也可以使用 Node.js 或推播通知 REST API。 以下是 SDK 的使用範例。

Microsoft.Azure.NotificationHubs.NotificationOutcome outcome = null;

// Windows 8.1 / Windows Phone 8.1
var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" +
"You requested a Beatles notification</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, "Beatles");

// Windows 10
toast = @"<toast><visual><binding template=""ToastGeneric""><text id=""1"">" +
"You requested a Wailers notification</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, "Wailers");

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

Tags friends

在此範例中,Alice 關注的是 Beatles 的更新,Bob 關注的則是 Wailers 的更新。 Bob 也會關注 Charlie 的註解,而 Charlie 則會關注 Wailers。 當 Charlie 對 Beatles 發表註解時,Alice 與 Bob 都會收到來自通知中樞的通知。

雖然您可以在標記中編寫多項您所關注的事物 (例如 band_Beatlesfollows_Charlie),標記仍屬於簡單字串,而不是具有值的屬性。 只有在有特定標記或沒有特定標記時,才會比對註冊。

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

注意

Azure 通知中樞支援每註冊最多 60 個標籤。

使用標記指定使用者

另一種使用標記的方法就是識別與特定使用者相關聯的所有裝置。 您可以使用包含使用者識別碼的標記來標記註冊,如下圖所示:

Tag users

在該圖中,標記 user_Alice 的訊息會觸達以 user_Alice 標記的所有裝置。

標記運算式

在有些案例中,通知的目標必須是一組註冊,而這些註冊不是以單一標記識別,反而是透過使用標記的布林運算式來進行識別。

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

(follows_RedSox || follows_Cardinals) && location_Boston

Tag expressions

標籤運算式支援常見的布林運算子,例如 AND (&&)、OR (||),以及 NOT (!);這些運算子也可以包含括弧。 只使用 OR 運算子的標記運算式可以參考 20 個標記;具有 AND 運算子,但沒有 OR 運算子的的運算式則可以參考 10 個標籤;否則會限制標記運算式為 6 個標記。

以下是使用 SDK 傳送採用標記運算式通知的範例。

Microsoft.Azure.NotificationHubs.NotificationOutcome outcome = null;

String userTag = "(location_Boston && !follows_Cardinals)";

// Windows 8.1 / Windows Phone 8.1
var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" +
"You want info on the Red Sox</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);

// Windows 10
toast = @"<toast><visual><binding template=""ToastGeneric""><text id=""1"">" +
"You want info on the Red Sox</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);