APNS -节点APN -有效载荷-单报价



我正在使用node- js中的node-apn模块测试推送通知。除了特殊字符(如单引号)不能正确转义之外,所有工作都很好。带有单引号的推送通知(例如,我们将变成实际通知中的we ll)。我试过正则表达式,猫鼬。tobject, message.message.toString()无效

Message.findOne(query).lean().exec(function (err, doc){
     if (!doc || doc == null) {                                              
                    message.save(function(e) {
                        console.log("message saved")
                        if (e) {
                            console.log("there is an error")
                            console.log(e)
                        } else {
                            console.log(message.device_token)
                            var mesg = message.toObject();
                            var msg = JSON.stringify(mesg);
                            var payload = {
                                "contact" : message.contact,
                                "did" : message.did,
                                "id" : message.message_id,
                                "date" : message.date,
                                "message" : message.message
                            }     
                            var clean = message.message.toString().replace(/[-[]{}()*+?.,\^$|#s]/g, "\$&");
                            var note = new apns.Notification();
                            var myDevice = new apns.Device(message.device_token);
                        note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
                        note.badge = 3;                                                                 
                        note.alert = message.message;
                        note.payload = payload;
                        apnsConnection.pushNotification(note, myDevice);                                                                    
                    }
                    })                                                                                                                                                                                    
        }                                                                                                                                                               
    }); 
}); 

我通过在消息中转义json格式的单引号(这是//')解决了这个问题。使用替换函数的消息值:

var messageStringCleaned = message.message.toString().replace(/\/g,"");                                                                                                                                                                            
    var payload = {
        "contact" : message.contact,
        "did" : message.did,
        "id" : message.message_id,
        "date" : message.date,
        "message" : messageStringCleaned
    }     
var note = new apns.Notification();
var myDevice = new apns.Device(message.device_token);
note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
note.badge = 3;                                                                 
note.alert = messageStringCleaned;
note.payload = payload;
apnsConnection.pushNotification(note, myDevice);

最新更新