在我的推送通知中,我有可以发送的动态参数。我可以通过常规通知执行此操作并动态创建我的有效负载。但我想使用模板,因为我需要发送到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来说太大了。
答案 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)'}}";
我认为这将适用于不同数量的参数,而您未提供的参数将仅为空/空。否则你可以尝试注册多个模板,每个模板都有不同数量的参数......