【问题标题】:Azure Notification Hub Templates - Dynamic TemplateAzure 通知中心模板 - 动态模板
【发布时间】:2015-02-06 21:12:44
【问题描述】:

在我的推送通知中,我有可以发送的动态参数。我可以通过定期通知来做到这一点并动态创建我的有效负载。但我想为此使用模板,因为我需要发送到 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 来说可能太大。

【问题讨论】:

    标签: c# azure azure-notificationhub


    【解决方案1】:

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

    "{\"data\":{\"message\":\"$(message)\",\"icon\":\"$(icon)\",\"url\":\" $(url)\",\"action\":\"$(action)\"}}"

    然后发送一条消息,您可以为操作指定“删除”,为 url 指定“”,反之亦然。

    【讨论】:

    • 就像我在问题中所说的那样,我不能像这样添加所有参数,因为我有很多而且它们是动态的。
    • 我明白了...看起来模板在当前实施中不适合您。
    【解决方案2】:

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

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

    我假设这将适用于不同数量的参数,并且您不提供的参数将只是空/null。否则你可以尝试注册多个模板,每个模板都有不同数量的参数...

    【讨论】:

    • 谢谢,有趣的解决方案,我会尝试使用多个模板。
    猜你喜欢
    • 2021-09-25
    • 2015-08-20
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多