Routning och tagguttryck
Översikt
Med tagguttryck kan du rikta in dig på specifika uppsättningar av enheter, eller mer specifikt registreringar, när du skickar ett push-meddelande via Notification Hubs.
Rikta in sig på specifika registreringar
Det enda sättet att rikta specifika meddelanderegistreringar är att associera taggar med dem och sedan rikta dessa taggar. Som beskrivs i Registreringshantering måste en app registrera en enhetsreferens på en meddelandehubb för att kunna ta emot push-meddelanden. När appen har skapat en registrering på en meddelandehubb kan programmets serverdel skicka push-meddelanden till den. Programserverdelen kan välja vilka registreringar som ska riktas mot ett specifikt meddelande på följande sätt:
- Sändning: alla registreringar i meddelandehubben får meddelandet.
- Tagg: alla registreringar som innehåller den angivna taggen får meddelandet.
- Tagguttryck: alla registreringar vars uppsättning taggar matchar det angivna uttrycket får meddelandet.
Taggar
En tagg kan vara vilken sträng som helst, upp till 120 tecken, som innehåller alfanumeriska tecken och följande icke-alfanumeriska tecken: '_
', '@
', '#
', '.
', ':
-
'. I följande exempel visas ett program från vilket du kan ta emot popup-meddelanden om specifika musikgrupper. I det här scenariot är ett enkelt sätt att dirigera meddelanden att märka registreringar med taggar som representerar de olika banden, som i följande bild:
I figuren når meddelandet som taggats med Beatles bara surfplattan som registrerats med taggen Beatles.
Mer information om hur du skapar registreringar för taggar finns i Registreringshantering.
Du kan skicka meddelanden till taggar med hjälp av Microsoft.Azure.NotificationHubs.NotificationHubClient
metoderna för att skicka meddelanden i klassen i Microsoft Azure Notification Hubs SDK. Du kan också använda Node.js eller REST-API:er för push-meddelanden. Här är ett exempel med hjälp av 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");
Taggar får inte företableras och kan referera till flera appspecifika begrepp. Till exempel kan användare av det här exempelprogrammet kommentera band och vill få popup-meddelanden, inte bara för kommentarerna på sina favoritband, utan även för alla kommentarer från sina vänner, oavsett vilket band de kommenterar. Följande bild visar ett exempel på det här scenariot:
I det här exemplet är Alice intresserad av uppdateringar för Beatles och Bob är intresserad av uppdateringar för Wailers. Bob är också intresserad av Charlies kommentarer, och Charlie är intresserad av Wailers. När ett meddelande skickas för Charlies kommentar till Beatles skickar Notification Hubs det till både Alice och Bob.
Du kan koda flera problem i taggar (till exempel band_Beatles
eller follows_Charlie
), men taggar är enkla strängar och inte egenskaper med värden. En registrering matchar endast om en viss tagg finns eller saknas.
En fullständig stegvis självstudie om hur du använder taggar för att skicka till intressegrupper finns i Senaste nytt.
Anteckning
Azure Notification Hubs stöder högst 60 taggar per registrering.
Använda taggar för att rikta in sig på användare
Ett annat sätt att använda taggar är att identifiera alla enheter som är associerade med en viss användare. Du kan tagga en registrering med en tagg som innehåller användar-ID:t, som i följande bild:
I bilden når meddelandet som är taggat user_Alice
alla enheter som är taggade med user_Alice
.
Tagguttryck
Det finns fall där meddelanden måste riktas mot en uppsättning registreringar som inte identifieras av en enda tagg, utan av ett booleskt uttryck med hjälp av taggar.
Överväg ett sportprogram som skickar en påminnelse till alla i Boston om en match mellan Red Sox och Cardinals. Om klientappen registrerar taggar om intresse för team och plats bör meddelandet riktas till alla i Boston som är intresserade av antingen Red Sox eller Cardinals. Det här villkoret kan uttryckas med följande booleska uttryck:
(follows_RedSox || follows_Cardinals) && location_Boston
Tagguttryck stöder vanliga booleska operatorer som AND
(&&
), OR
(||
) och NOT
(!
); de kan också innehålla parenteser. Tagguttryck som endast OR
använder operatorer kan referera till 20 taggar. Uttryck med AND
operatorer men inga OR
operatorer kan referera till 10 taggar. Annars är tagguttryck begränsade till 6 taggar.
Här är ett exempel för att skicka meddelanden med tagguttryck med hjälp av 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);