angular.module('push') .factory('IMChatService', function ($q, IMChatConfig) { return { // 初始化MQTT参数配置 initMQTT: function () { mqtt.init(IMChatConfig); }, // 连接MQTT服务器 connect: function () { var deferred = $q.defer(); mqtt.connect(function (result) { deferred.resolve(result); }, function (err) { deferred.reject(err); }); return deferred.promise; }, // 断开MQTT服务器 disconnect: function () { var deferred = $q.defer(); mqtt.disconnect(function (result) { deferred.resolve(result); }, function (err) { deferred.reject(err); }); return deferred.promise; }, // 订阅主题topic subscribe: function (topic, qos) { var deferred = $q.defer(); var option = { topic: topic, qos: qos }; mqtt.subscribe(option, function (result) { deferred.resolve(result); }, function (err) { deferred.reject(err); }); return deferred.promise; }, // 取消订阅主题topic unsubscribe: function (topic) { var deferred = $q.defer(); mqtt.unsubscribe({topic: topic}, function (result) { deferred.resolve(result); }, function (err) { deferred.reject(err); }); return deferred.promise; }, // 于主题topic下发布消息 publish: function (option) { var deferred = $q.defer(); mqtt.publish(option, function (result) { deferred.resolve(result); }, function (err) { deferred.reject(err); }); return deferred.promise; }, // 于主题topic下发布遗嘱消息 will: function (topic, message, qos, retain) { var option = { topic: topic, message: message, qos: qos, retain: retain }; mqtt.will(option); }, // 设置角标消息数 setBadge: function (num) { cordova.plugins.notification.badge.set(num); }, // 增加角标消息数 increaseBadge: function (num) { cordova.plugins.notification.badge.increase(num, function (badge) { console.log(badge); }); }, // 减少角标消息数 decreaseBadge: function (num) { cordova.plugins.notification.badge.decrease(num, function (badge) { console.log(badge); }); }, // 清空角标消息数 clearBadge: function () { cordova.plugins.notification.badge.clear(); }, // 获取角标消息数 getBadge: function () { var deferred = $q.defer(); try { cordova.plugins.notification.badge.get(function (badge) { deferred.resolve(badge); }); }catch (e){ deferred.reject(e); } return deferred.promise; } } });