如何在NodeJS服务器的消息中发送带有表情符号的IOS推送通知?

时间:2013-06-15 15:13:22

标签: node.js unicode utf-8

我写了一些服务器代码来发送推送通知。我有一个表单字段,称为消息。我需要的是,在信息中添加一些表情符号字符。

如果我写\ ue48d,对于云字符,服务器将其视为字符串'\ ue48d'。

如何解码它以便我可以在推送通知中使用它?

更新:这是我的服务器代码。我想将\ exxx写入表单的消息字段,并在此代码中对其进行编码,然后发送给Apple。

exports.create = function(req, res){
    var devices = req.body.devices;
    var message = req.body.message;
    var note = new apn.Notification();
    note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
    note.badge = 3;
    note.sound = "ping.aiff";
    note.alert =  message;
    note.payload = {'messageFrom': 'Burak'}; 
    for (var i in devices) {
      device =  new apn.Device(devices[i]);
      apnConnection.pushNotification(note, device);
    }

    res.send(200,'Successfull')
}

1 个答案:

答案 0 :(得分:1)

你一直在说不同的事情。你先说:

  

如果我写 \ ue48d ,对于云端角色,服务器会将其视为字符串   的 '\ ue48d'。

现在你说

  

我将“\ e415 Hello!”写入消息字段。

冒着指出明显的\ue48d!= \e415

的风险

JSON中的UTF8字符的编码方式与\ u一样,然后字符代码即\ue48d是一个有效的字符,可以通过JSON发送到手机。 \e415不是,这就是为什么您的手机没有将其显示为表情符号字符。

那么,当您向其发送'\ue48d'时,您的手机会看到什么?即当你发送原始正确编码的字符串时它会看到什么。

修改

如果从服务器发送正确编码的字符串时它可以工作,那么你可能只需要解码发送到服务器的消息,然后再发回去,即

message = JSON.parse(message);

如果您的服务器收到的消息只是一个字符串,那么它应该按原样运行。如果消息是数组或对象,则您需要选择相应的条目作为消息发送到手机。