IMChatService.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. angular.module('push')
  2. .factory('IMChatService', function ($q, IMChatConfig) {
  3. return {
  4. // 初始化MQTT参数配置
  5. initMQTT: function () {
  6. mqtt.init(IMChatConfig);
  7. },
  8. // 连接MQTT服务器
  9. connect: function () {
  10. var deferred = $q.defer();
  11. mqtt.connect(function (result) {
  12. deferred.resolve(result);
  13. },
  14. function (err) {
  15. deferred.reject(err);
  16. });
  17. return deferred.promise;
  18. },
  19. // 断开MQTT服务器
  20. disconnect: function () {
  21. var deferred = $q.defer();
  22. mqtt.disconnect(function (result) {
  23. deferred.resolve(result);
  24. },
  25. function (err) {
  26. deferred.reject(err);
  27. });
  28. return deferred.promise;
  29. },
  30. // 订阅主题topic
  31. subscribe: function (topic, qos) {
  32. var deferred = $q.defer();
  33. var option = {
  34. topic: topic,
  35. qos: qos
  36. };
  37. mqtt.subscribe(option, function (result) {
  38. deferred.resolve(result);
  39. },
  40. function (err) {
  41. deferred.reject(err);
  42. });
  43. return deferred.promise;
  44. },
  45. // 取消订阅主题topic
  46. unsubscribe: function (topic) {
  47. var deferred = $q.defer();
  48. mqtt.unsubscribe({topic: topic}, function (result) {
  49. deferred.resolve(result);
  50. },
  51. function (err) {
  52. deferred.reject(err);
  53. });
  54. return deferred.promise;
  55. },
  56. // 于主题topic下发布消息
  57. publish: function (option) {
  58. var deferred = $q.defer();
  59. mqtt.publish(option, function (result) {
  60. deferred.resolve(result);
  61. },
  62. function (err) {
  63. deferred.reject(err);
  64. });
  65. return deferred.promise;
  66. },
  67. // 于主题topic下发布遗嘱消息
  68. will: function (topic, message, qos, retain) {
  69. var option = {
  70. topic: topic,
  71. message: message,
  72. qos: qos,
  73. retain: retain
  74. };
  75. mqtt.will(option);
  76. },
  77. // 设置角标消息数
  78. setBadge: function (num) {
  79. cordova.plugins.notification.badge.set(num);
  80. },
  81. // 增加角标消息数
  82. increaseBadge: function (num) {
  83. cordova.plugins.notification.badge.increase(num, function (badge) {
  84. console.log(badge);
  85. });
  86. },
  87. // 减少角标消息数
  88. decreaseBadge: function (num) {
  89. cordova.plugins.notification.badge.decrease(num, function (badge) {
  90. console.log(badge);
  91. });
  92. },
  93. // 清空角标消息数
  94. clearBadge: function () {
  95. cordova.plugins.notification.badge.clear();
  96. },
  97. // 获取角标消息数
  98. getBadge: function () {
  99. var deferred = $q.defer();
  100. try {
  101. cordova.plugins.notification.badge.get(function (badge) {
  102. deferred.resolve(badge);
  103. });
  104. }catch (e){
  105. deferred.reject(e);
  106. }
  107. return deferred.promise;
  108. }
  109. }
  110. });