2016-06-29 26 views
2

Ich richte ein Web-API-Projekt ein, das Azure Push Notifications verwendet. Ich möchte das neue Modell "Installation" anstelle des älteren Modells "Registrierung" verwenden. Die Dokumentation ist jedoch etwas eingeschränkt.So wählen Sie Vorlagen bei Verwendung der Microsoft.Azure.NotificationHubs.Installation-Klasse?

Mit Blick auf MSDN hat Microsoft.Azure.NotificationHubs.Installation eine Tags Eigenschaft.

Es gibt auch eine Templatesproperty. Der Vorlagentyp ist InstallationTemplate und surprisingly hat auch Tags. Die Vorlagen sind nicht nur eine Liste, sondern ein Wörterbuch, das von string bis InstallationTemplate mappt.

Ich verstehe die Idee hinter Tags. Aber ich bin verwirrt über die zwei Tag-Eigenschaften und den Schlüssel des Wörterbuchs.

Ich sah ein Beispiel, wo die Installation.Tag auf "foo" gesetzt ist und dann zwei Vorlagen mit den Tasten "template1" und "template2" hinzugefügt werden. Die InstallationTemplate.Tag wurde auf "tag-for-template1" und "tag-for-template2" eingestellt.

  • Müssen die beiden Tag-Werte übereinstimmen?
  • Wofür wird jeder von ihnen verwendet?
  • Was sollte der Schlüssel des Vorlagenwörterbuchs sein?
  • Wenn ich die Methode verwenden, um eine Benachrichtigung über den NotificationHubClient zu senden, kann ich ein Tag angeben - was ist dagegen abgestimmt und welche Vorlage wird ausgewählt?

Antwort

1

Nach ein paar Tests bin ich ein bisschen weiser.

Sowohl die Microsoft.Azure.NotificationHubs.Installation ‚s Tags und die Tags innerhalb der InstallationTemplate werden, wenn SendTemplateNotificationAsync() verwendet werden ausgewertet. Der Schlüssel, der im Wörterbuch angegeben werden muss, scheint nicht verwendet zu werden.

Beispiel:

var installationA = new Installation(); 
installationA.Tags = new List<string> { $"install-a" }; 
installationA.Templates.Add("someKey", new InstallationTemplate 
{ 
    Body = "JSON-FOR-TEMPLATE" 
    Tags = new List<string> { $"subtemplate1" } 
}); 
installationA.Templates.Add("someOtherKey", new InstallationTemplate 
{ 
    Body = "JSON-FOR-TEMPLATE" 
    Tags = new List<string> { $"subtemplate2" } 
}); 


var installationB = new Installation(); 
installationB.Tags = new List<string> { $"install-b" }; 
installationB.Templates.Add("someKey", new InstallationTemplate 
{ 
    Body = "JSON-FOR-TEMPLATE" 
    Tags = new List<string> { $"subtemplate1" } 
}); 
installationB.Templates.Add("someOtherKey", new InstallationTemplate 
{ 
    Body = "JSON-FOR-TEMPLATE" 
    Tags = new List<string> { $"subtemplate2" } 
}); 

Verwenden Tag Ausdrücke, die Sie jetzt für jede Kombination von "install-a", "install-b", "subtemplate1" filtern und "subtemplate2".

Die Schlüssel "someKey" und "someOtherKey" werden von der Abfrage nicht verwendet und ich verstehe nicht, warum sie kein List<T> anstelle des Wörterbuchs verwendet haben.