Azure通知中心模板 - 动态模板

时间:2015-01-29 17:20:36

标签: c# azure azure-notificationhub

在我的推送通知中,我有可以发送的动态参数。我可以通过常规通知执行此操作并动态创建我的有效负载。但我想使用模板,因为我需要发送到iOS,Android和WP。例如:

var payloadAndroid = "{'data':{'message':'$(message)','icon':'$(icon)','url':'/test/test'}}";
var payloadAndroid = "{'data':{'message':'$(message)','icon':'$(icon)','action':'delete'}}";

所以我试图像这样为Android注册动态模板,但我不确定这是否可行:

var payloadAndroid = "{'data':{'message':'$(message)','icon':'$(icon)',$(params)}}";
registration = new GcmTemplateRegistrationDescription(deviceToken, payloadAndroid);

然后,我会使用这些参数:

var dictionary = new Dictionary<string, string>();
dictionary.Add("message", "My message test");
dictionary.Add("icon", "icon.png");
dictionary.Add("params", "'url':'/test/index.aspx','action':'myaction'");

hub.SendTemplateNotificationAsync(dictionary, "myTag");

这会抛出一个XmlException,但是想知道是否有人有另一个解决方案吗?

我也尝试过这些相同的例外:

var payloadAndroid = "{'data':{'message':'$(message)','icon':'$(icon)',{$(params)}}}";
var payloadAndroid = "{'data':{'message':'$(message)','icon':'$(icon)',#(params)}}";

我不想在有效负载中添加所有可能的参数,因为它们来自数据库,可以更改并且有效负载可能对iOS来说太大了。

2 个答案:

答案 0 :(得分:0)

模板有效负载应该是有效的JSON,否则客户端验证将失败。试试这个:

&#34; {\&#34;数据\&#34;:{\&#34;消息\&#34;:\&#34; $(消息)\&#34; \& #34;图标\&#34;:\&#34; $(图标)\&#34; \&#34; URL \&#34;:\&#34; $(URL)\&#34 ; \&#34;操作\&#34;:\&#34; $(动作)\&#34;}}&#34;

然后发送您可以指定的消息&#34;删除&#34;采取行动和&#34;&#34;用于网址,反之亦然。

答案 1 :(得分:0)

如果没有对此进行测试,您可以尝试这样的事情,因为您可以保证最大数量的参数:

var payloadAndroid = "{'data':{'message':'$(message)','icon':'$(icon)','param1':'$(param1)','param2':'$(param2)','param3':'$(param3)'}}";

我认为这将适用于不同数量的参数,而您未提供的参数将仅为空/空。否则你可以尝试注册多个模板,每个模板都有不同数量的参数......