I register two different templates for my WindowsPhone clients (one for tile-update and one for toasts).
Is there a possibility to only send one notification and my WindowsPhone clients getting a toast notification and a tile update?
I found a forum thread on msdn with following message (in the answer):
If you call a method SendTemplateNotificationAsync({“properties of template”}, “en-us”)) like this, That will target the toast and tile both notifications to the device A.
But that won't work for me. My client only gets the tile-update and not the toast notification.
I also tried a template with both in xml (tile and toast). Found here. But that also won't work (only toast visible on client).
I know, I can work with additional tags (like "toast" and "tile") and send the notifications like following code snippet. But I think this is an ugly solution:
await hubClient.SendTemplateNotificationAsync(content, tags + " && toast");
await hubClient.SendTemplateNotificationAsync(content, tags + " && tile");
Any help is appreciated. Thanks
Edit: My templates and my notification-properties:
Properties:
var content = new Dictionary<string, string>
{
{"title_en", "English title"},
{"message_en", "English content"},
{"title_de", "Deutscher Titel"},
{"message_de", "Deutscher Inhalt"},
{"url", url},
{"count", count.ToString()}
};
Toast-Template (WindowsPhone)
String.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>$(title_{0})</wp:Text1>" +
"<wp:Text2>$(message_{0})</wp:Text2>" +
"<wp:Param>$(url)</wp:Param>" +
"</wp:Toast>" +
"</wp:Notification>", language);
Tile-Template (WindowsPhone)
String.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Tile Template=\"IconicTile\">" +
"<wp:SmallIconImage>Small.png</wp:SmallIconImage>" +
"<wp:IconImage>Large.png</wp:IconImage>" +
"<wp:WideContent1>$(title_{0})</wp:WideContent1>" +
"<wp:WideContent2>$(message_{0})</wp:WideContent2>" +
"<wp:WideContent3 Action=\"Clear\"></wp:WideContent3>" +
"<wp:Count>$(count)</wp:Count>" +
"<wp:Title>AppName</wp:Title>" +
"</wp:Tile>" +
"</wp:Notification>", language)
This is not an ugly solution, actually there is a reason behind it.Selection of
template/registration always based on tags not based on payload keys.
so actually you've registered the templates to different set of tags like =>In this case Device tile template is registered with
tags : {"en-us", "tile"}
and Toast istags: {"en-us", "toast"}
and these two registrations are different so you can't send them in single request.IMO you can't have the both notification with this single call
=>SendTemplateNotificationAsync({“properties of template”}, “en-us”))
' because again IMO(As I was not able to work it out some time before) Notification hub is not able to decide which template (tile, toast) he has to send to the device. because each of them is registered with different tags set as mentioned above.Also Why it is not an ugly solution, because It gives you more control over your notifications because you know toast and tile notifications have different purpose, they simultaneously don't provide any extra value.
Tile notification => It is used for info that can last long for some time and does not stale sooner. Like counter, Back image, Some new update etc. also this info does not require instant user's attention immediately.
Toast Notification => It is used for sending out info that is quite instant(hope you understand what I mean).Like some new message came, you have released a new update etc.
If you send two notification simultaneously all the time then in that case It really does not add extra value.