我为我的WindowsPhone客户端注册了两个不同的模板(一个用于tile更新,一个用于toast)。
是否有可能只发送一个通知,我的WindowsPhone客户端会收到Toast通知和磁贴更新?
我发现forum thread on msdn有以下消息(在答案中):
如果你调用方法SendTemplateNotificationAsync({“的属性 模板“},”en-us“))像这样,它将以toast和tile为目标 两个通知设备A.
但那对我不起作用。我的客户端只获取tile更新而不是toast通知。
我还在xml(tile和toast)中尝试了一个模板。 Found here。但这也不会起作用(只能在客户端上看到吐司)。
我知道,我可以使用其他代码(例如" toast"" tile")并发送通知,如下面的代码段。但我认为这是一个丑陋的解决方案:
await hubClient.SendTemplateNotificationAsync(content, tags + " && toast");
await hubClient.SendTemplateNotificationAsync(content, tags + " && tile");
感谢任何帮助。感谢
修改:我的模板和我的通知属性:
属性:
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);
平铺模板(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)
答案 0 :(得分:1)
await hubClient.SendTemplateNotificationAsync(content, tags + " && toast");
await hubClient.SendTemplateNotificationAsync(content, tags + " && tile");
这不是一个丑陋的解决方案,实际上背后有一个原因。选择
template/registration always based on tags not based on payload keys.
所以实际上您已将模板注册到不同的标签集,例如=&gt;
device A - toast template, tags: {"en-us", "toast"}
device A - tile template , tags : {"en-us", "tile"}
在这种情况下,设备磁贴模板已在tags : {"en-us", "tile"}
注册,而Toast为tags: {"en-us", "toast"}
,这两个注册不同,因此您无法在单个请求中发送它们。
IMO you can't have the both notification with this single call
=&gt; SendTemplateNotificationAsync({“properties of template”}, “en-us”))
&#39;因为再次IMO(因为我之前无法解决)通知中心无法决定他必须向设备发送哪个模板(磁贴,吐司)。因为每个人都注册了上面提到的不同标签。
此外,为什么它不是一个丑陋的解决方案,因为它让您可以更好地控制通知,因为您知道吐司和平铺通知有不同的目的,它们同时不提供任何额外的价值。
平铺通知 =&gt;它用于可以持续一段时间并且不会更快过时的信息。与计数器,背面图像,一些新的更新等一样,此信息也不需要立即用户立即关注。
Toast Notification =&gt;它用于发送非常即时的信息(希望你理解我的意思)。像一些新消息来了,你已经发布了一个新的更新等。
如果你一直同时发送两个通知,那么在这种情况下,它确实没有增加额外的价值。