Push notifications

This commit is contained in:
Martin Donnelly 2016-04-28 16:57:44 +01:00
parent 244f0a2b40
commit cef2cdf458
4 changed files with 97 additions and 12 deletions

12
app.js
View File

@ -16,6 +16,7 @@ var mqttConnect = require('./lib/mqtt/mqttConnect');
var log4js = require('log4js');
var logger = log4js.getLogger();
var WebSocketServer = require('websocket').server;
var EventEmitter = require('events');
@ -29,6 +30,8 @@ var heating_v1 = require('./routes/heating_v1');
var projector_v1 = require('./routes/projector_v1');
var isProduction = false;
var iosTokens = [];
mqttConnect.setEmitter(busEmitter);
mqttConnect.doConnection();
@ -166,7 +169,7 @@ wsServer.on('request', function(request) {
console.log((new Date()) + ' Connection accepted.');
var sendSocketHandler = (obj) => {
//logger.info('sendSocket: ' , JSON.stringify(obj));
//Logger.info('sendSocket: ' , JSON.stringify(obj));
try {
connection.sendUTF(JSON.stringify(obj));
}
@ -211,6 +214,13 @@ app.post('/api/v1/heating/on', heating_v1.turnon);
app.post('/api/v1/projector/off', projector_v1.turnoff);
app.post('/api/v1/projector/on', projector_v1.turnon);
app.post('/api/v1/register/ios', function(req, res) {
console.log(req.body);
});
app.listen(3000, function() {
console.log('Express listening on 3000');
});

View File

@ -9,7 +9,7 @@ var SOController = (function() {
var path;
var wsUrl;
var local = true;
var local = false;
var bus = {};
var prevDate;
var prevTime;
@ -17,6 +17,9 @@ var SOController = (function() {
var weatherStore = null;
var lastWeatherRequest = 0;
var soWebSocket;
var iosConfig = {
"badge": true, "sound": true, "alert": true,
};
var lightsList = {
off: ['frontLightOff', 'backLightOff'], on: ['frontLightOn', 'backLightOn']
@ -291,18 +294,54 @@ var SOController = (function() {
};
var notifyConfirm = function(r) {
console.log(r);
console.log('notifyConfirm', r);
};
var cordovaNotify = function(d) {
navigator.notification.confirm(
d.msg, // message
notifyConfirm, // callback to invoke with index of button pressed
'Smartoffice Console', // title
['Extend','Ignore'] // buttonLabels
);
try {
navigator.notification.beep(1);
} catch(e)
{
console.log(e);
}
try {
navigator.notification.confirm(
d.msg, // message
notifyConfirm, // callback to invoke with index of button pressed
'Smartoffice Console', // title
['Extend','Ignore'] // buttonLabels
);
} catch(e)
{
console.log(e);
}
};
var setupPush = function() {
console.log('Setting up push notifications..');
var push = PushNotification.init({"android":{},"ios":iosConfig,"windows":{}});
push.on('registration', function(d) {
console.log('Registration: ', JSON.stringify(d));
$.post(path + 'api/v1/register/ios', d, function() {});
});
push.on('notification', function(d) {
console.log('Notification: ', d);
});
push.on('error', function(e) {
console.error('Push error:', e);
});
};
//
module.init = function() {
@ -310,6 +349,7 @@ var SOController = (function() {
clock();
weatherClock();
soWebSocket = new SOWEBSOCKET(this);
setupPush();
};
module.updateCalendar = function(data) {
@ -322,14 +362,13 @@ var SOController = (function() {
module.notify = function(d) {
if (window.cordova && !(window.cordova instanceof HTMLElement)) {
document.addEventListener('deviceready', onDeviceReady, false);
cordovaNotify(d);
} else {
browserNotify(d);
}
};
return module;
})();

View File

@ -8,6 +8,12 @@ var events = require('events');
var eventBus ;
var util = require('util');
var pushNotifications = require('node-pushnotifications');
var gcmSender = new gcm.Sender({
key: 'AIzaSyBl1vJ00d_lMb5yKGp97jZ94Oc70GRpZiw'
});
var officeController = function(neweventbus) {
logger.debug((typeof neweventbus));
@ -93,6 +99,29 @@ officeController.prototype.announceMeetingEnd = function(meeting) {
var packet = {id: 'announce', msg: msg, uid: meeting.uid};
eventBus.emit('sendSocket', packet);
var message = new gcm.Message({
collapse_key: 'test',
data: {
key1: 'value1'
},
delay_while_idle: true,
time_to_live: 34,
dry_run: false
});
sender.sendMessage(message.toJSON(), '', true, function(err, data) {
if (!err) {
logger.info('Message sent');
logger.debug(data);
// do something
} else {
logger.error('Message failed');
logger.error(err);
// handle error
}
});
};

7
routes/register_v1.js Normal file
View File

@ -0,0 +1,7 @@
/**
*
* User: Martin Donnelly
* Date: 2016-04-28
* Time: 16:51
*
*/