ng-cordova
Version:
[ngCordova](http://ngcordova.com/) ==========
94 lines (90 loc) • 2.92 kB
JavaScript
// 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;
},
getBadgeNumber : function () {
var q = $q.defer();
if (push === undefined) {
q.reject(new Error('init must be called before any other operation'));
} else {
push.getApplicationIconBadgeNumber(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;
}
};
}]);