1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81// install : cordova plugin add phonegap-plugin-push // link : https://github.com/phonegap/phonegap-plugin-push angular.module('ngCordova.plugins.push_v5', []) .factory('$cordovaPushV5',['$q', '$rootScope', '$timeout', function ($q, $rootScope, $timeout) { /*global PushNotification*/ var push; return { initialize : function (options) { var q = $q.defer(); push = PushNotification.init(options); q.resolve(push); return q.promise; }, onNotification : function () { $timeout(function () { push.on('notification', function (notification) { $rootScope.$emit('$cordovaPushV5:notificationReceived', notification); }); }); }, onError : function () { $timeout(function () { push.on('error', function (error) { $rootScope.$emit('$cordovaPushV5:errorOccurred', error);}); }); }, register : function () { var q = $q.defer(); if (push === undefined) { q.reject(new Error('init must be called before any other operation')); } else { push.on('registration', function (data) { q.resolve(data.registrationId); }); } return q.promise; }, unregister : function () { var q = $q.defer(); if (push === undefined) { q.reject(new Error('init must be called before any other operation')); } else { push.unregister(function (success) { q.resolve(success); },function (error) { q.reject(error); }); } return q.promise; }, setBadgeNumber : function (number) { var q = $q.defer(); if (push === undefined) { q.reject(new Error('init must be called before any other operation')); } else { push.setApplicationIconBadgeNumber(function (success) { q.resolve(success); }, function (error) { q.reject(error); }, number); } return q.promise; }, finish: function (){ var q = $q.defer(); if (push === undefined) { q.reject(new Error('init must be called before any other operation')); } else { push.finish(function (success) { q.resolve(success); }, function (error) { q.reject(error); }); } return q.promise; } }; }]);