使用APNS在C#

时间:2019-03-29 01:30:30

标签: c# json encoding apple-push-notifications pushsharp

我正在使用PushSharp处理iOS的推送通知。

一切顺利,直到我意识到我处理推送的方式不太强大:

apnsBroker.QueueNotification(新的ApnsNotification                 {

            DeviceToken = device.DeviceIdentifier,
            Payload = JObject.Parse("{\"aps\":{\"alert\" : {\"title\" : \"" + title 
            + "\", \"body\" : \"" + body + "\"}, \"badge\":" + badgeCount + "}, " + 
            "\"entity_id\" : \"" + entityId + "\", \"category_id\" : \"" + categoryId + "\", \"sub_id\" : \"" + subId
            + "\"}")
        });

编辑/更新我正在尝试的参数之一是\ t \ ud83d \uddbc️\(基本上,我想传递相框表情符号的unicode字符,因此可以将其渲染为APNS警报)。目前正在中断。

我正在C#中发送这样的代码:@“ \ t \ ud83d \uddbc️\”

因此,正如您所看到的,我正在渲染JSON有效负载,并且此框架采用了JObject。正如我在代码审阅期间立即假定的那样,问题是,如果上述任何参数(标题,正文等)中的任何一个最终成为诸如{或“或{等的字符串,则它将“破坏” JSON,因为JObject可以不能将其解析为有效的JSON。

在这种情况下,您认为我应该怎么做?我是否必须对其进行编码,我想唯一的缺点是编码中有反斜杠或其他东西吗?任何允许用户输入的建议(标题和正文可以是自由格式的文本,因此一切皆有可能)。

预先感谢您的任何建议!

编辑

再次感谢您零帮助。

var escapedString = JsonConvert.ToString(normalString);

保存了一天。重要的是要注意,如果您正在使用它,则转义的字符串不应包装在“”中,因为它已被转义(如下文所述)。

1 个答案:

答案 0 :(得分:1)

只要在变量{{1}中用引号引起来,no need to escape braces"{

关于在变量中使用双引号(}),您可以执行以下操作:

"

您还需要转义转义字符本身//Escapes quotes param = param.Replace(@"""", @"\""");

\

此外,这都是valid escapes

如果您使用的是Newtonsoft.Json,它们会有一个method to do this for you

下面或take a look here中的用法示例。 请注意,这会为您的字符串添加引号。

//Escapes backslash
param = param.Replace(@"\", @"\\");