crunchbutton/www/assets/cockpit/js/service.push.js
2014-10-03 10:57:51 -07:00

106 lines
1.9 KiB
JavaScript

NGApp.factory('PushService', function($http) {
var service = {
id: null,
badges: 0
};
if (!App.isPhoneGap) {
return service;
}
document.addEventListener('pushnotification', function(e) {
service.receive(e.msg);
}, false);
parent.plugins.pushNotification.register(
function(id) {
service.id = id;
console.debug('Push id: ' + id);
$http({
method: 'POST',
url: App.service + 'config',
data: {key: 'push-ios', value: service.id},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
},
function() {
console.error('Failed registering push notifications', arguments);
},
{
'badge': 'true',
'sound': 'true',
'alert': 'true',
'ecb': 'pushnotification',
'categories': [
{
'identifier': 'order-new-test',
'actions': [
{
'title': 'Accept',
'identifier': 'i11',
'authentication': 'false',
'mode': 'background'
},
{
'title': 'View',
'identifier': 'i22',
'authentication': 'false',
'mode': 'foreground'
}
]
},
{
'identifier': 'support-message-test',
'actions': [
{
'title': 'Close',
'identifier': 'i44',
'authentication': 'false',
'destructive': 'true',
'mode': 'background'
},
{
'title': 'View',
'identifier': 'i33',
'authentication': 'false',
'mode': 'foreground'
}
]
}
]
}
);
service.receive = function(msg) {
console.debug('Notification: ', msg);
var complete = function() {
};
// iOS
if (msg.alert) {
App.alert(msg.alert);
}
if (msg.badge) {
service.badge++;
parent.plugins.pushNotification.setApplicationIconBadgeNumber(complete, complete, service.badge);
}
if (msg.sound) {
var snd = new parent.Media(msg.sound.replace('www/',''));
snd.play();
}
}
return service;
});