ng-cordova
Version:
[ngCordova](http://ngcordova.com/) ==========
358 lines (271 loc) • 10 kB
JavaScript
// install : cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git
// link : https://github.com/katzer/cordova-plugin-local-notifications
angular.module('ngCordova.plugins.localNotification', [])
.factory('$cordovaLocalNotification', ['$q', '$window', '$rootScope', '$timeout', function ($q, $window, $rootScope, $timeout) {
document.addEventListener('deviceready', function () {
if ($window.cordova &&
$window.cordova.plugins &&
$window.cordova.plugins.notification &&
$window.cordova.plugins.notification.local) {
// ----- "Scheduling" events
// A local notification was scheduled
$window.cordova.plugins.notification.local.on('schedule', function (notification, state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:schedule', notification, state);
});
});
// A local notification was triggered
$window.cordova.plugins.notification.local.on('trigger', function (notification, state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:trigger', notification, state);
});
});
// ----- "Update" events
// A local notification was updated
$window.cordova.plugins.notification.local.on('update', function (notification, state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:update', notification, state);
});
});
// ----- "Clear" events
// A local notification was cleared from the notification center
$window.cordova.plugins.notification.local.on('clear', function (notification, state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:clear', notification, state);
});
});
// All local notifications were cleared from the notification center
$window.cordova.plugins.notification.local.on('clearall', function (state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:clearall', state);
});
});
// ----- "Cancel" events
// A local notification was cancelled
$window.cordova.plugins.notification.local.on('cancel', function (notification, state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:cancel', notification, state);
});
});
// All local notifications were cancelled
$window.cordova.plugins.notification.local.on('cancelall', function (state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:cancelall', state);
});
});
// ----- Other events
// A local notification was clicked
$window.cordova.plugins.notification.local.on('click', function (notification, state) {
$timeout(function () {
$rootScope.$broadcast('$cordovaLocalNotification:click', notification, state);
});
});
}
}, false);
return {
schedule: function (options, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.schedule(options, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
add: function (options, scope) {
console.warn('Deprecated: use "schedule" instead.');
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.schedule(options, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
update: function (options, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.update(options, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
clear: function (ids, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.clear(ids, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
clearAll: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.clearAll(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
cancel: function (ids, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.cancel(ids, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
cancelAll: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.cancelAll(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
isPresent: function (id, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.isPresent(id, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
isScheduled: function (id, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.isScheduled(id, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
isTriggered: function (id, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.isTriggered(id, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
hasPermission: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.hasPermission(function (result) {
if (result) {
q.resolve(result);
} else {
q.reject(result);
}
}, scope);
return q.promise;
},
registerPermission: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.registerPermission(function (result) {
if (result) {
q.resolve(result);
} else {
q.reject(result);
}
}, scope);
return q.promise;
},
promptForPermission: function (scope) {
console.warn('Deprecated: use "registerPermission" instead.');
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.registerPermission(function (result) {
if (result) {
q.resolve(result);
} else {
q.reject(result);
}
}, scope);
return q.promise;
},
getAllIds: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getAllIds(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getIds: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getIds(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getScheduledIds: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getScheduledIds(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getTriggeredIds: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getTriggeredIds(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
get: function (ids, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.get(ids, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getAll: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getAll(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getScheduled: function (ids, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getScheduled(ids, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getAllScheduled: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getAllScheduled(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getTriggered: function (ids, scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getTriggered(ids, function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getAllTriggered: function (scope) {
var q = $q.defer();
scope = scope || null;
$window.cordova.plugins.notification.local.getAllTriggered(function (result) {
q.resolve(result);
}, scope);
return q.promise;
},
getDefaults: function () {
return $window.cordova.plugins.notification.local.getDefaults();
},
setDefaults: function (Object) {
$window.cordova.plugins.notification.local.setDefaults(Object);
}
};
}]);