增加极光推送

This commit is contained in:
Lance Li 2015-01-25 22:57:44 +08:00
parent c5526043af
commit cef8eb92bf
4 changed files with 77 additions and 4 deletions

View File

@ -1,24 +1,38 @@
var models = require('../models');
var eventproxy = require('eventproxy');
var Message = models.Message;
var User = require('../proxy').User;
var push = require('../common/push');
var messageProxy = require('../proxy/message');
exports.sendReplyMessage = function (master_id, author_id, topic_id, reply_id, callback) {
var ep = new eventproxy();
ep.fail(callback);
var message = new Message();
message.type = 'reply';
message.master_id = master_id;
message.author_id = author_id;
message.topic_id = topic_id;
message.reply_id = reply_id;
message.save(callback);
message.save(ep.done('message_saved'));
ep.all('message_saved', function (msg) {
push.send(message.type, author_id, master_id, topic_id);
callback && callback();
});
};
exports.sendAtMessage = function (master_id, author_id, topic_id, reply_id, callback) {
var ep = new eventproxy();
ep.fail(callback);
var message = new Message();
message.type = 'at';
message.master_id = master_id;
message.author_id = author_id;
message.topic_id = topic_id;
message.reply_id = reply_id;
message.save(callback);
message.save(ep.done('message_saved'));
ep.all('message_saved', function (msg) {
push.send(message.type, author_id, master_id, topic_id);
callback && callback();
});
};

52
common/push.js Normal file
View File

@ -0,0 +1,52 @@
var User = require('../proxy/user');
var Message = require('../proxy/message');
var JPush = require("jpush-sdk");
var eventproxy = require('eventproxy');
var config = require('../config');
var client = JPush.buildClient(config.jpush.appKey, config.jpush.secretKey);
/**
* 通过极光推送发生消息通知
* @param {String} type 消息类型
* @param {String} author_id 消息作者ID
* @param {String} master_id 被通知者ID
* @param {String} topic_id 相关主题ID
*/
exports.send = function (type, author_id, master_id, topic_id) {
var ep = new eventproxy();
User.getUserById(author_id, ep.done('author'));
Message.getMessagesCount(master_id, ep.done('count'));
ep.all('author', 'count', function(author, count) {
var msg = author.loginname + ' ';
var extras = {
topicId: topic_id
};
switch(type) {
case 'at':
msg += '@了你';
break;
case 'reply':
msg += '回复了你的主题';
break;
default:
break;
}
client.push()
.setPlatform(JPush.ALL)
.setAudience(JPush.alias(master_id.toString()))
.setNotification(msg,
JPush.ios(msg, null, count, null, extras),
JPush.android(msg, null, null, extras)
)
.send(function(err, res) {
if (config.debug) {
if (err) {
console.log(err.message);
} else {
console.log('Sendno: ' + res.sendno);
console.log('Msg_id: ' + res.msg_id);
}
}
});
})
};

View File

@ -108,7 +108,13 @@ var config = {
['share', '分享'],
['ask', '问答'],
['job', '招聘'],
]
],
// 极光推送
jpush: {
appKey: 'your access key',
secretKey: 'your secret key'
}
};
module.exports = config;

View File

@ -43,7 +43,8 @@
"validator": "3.22.1",
"xmlbuilder": "2.4.4",
"xss": "0.1.15",
"yaqrcode": "0.0.2"
"yaqrcode": "0.0.2",
"jpush-sdk": "3.1.0"
},
"devDependencies": {
"coveralls": "2.11.2",