index.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. 'use strict';
  2. var GeTui = require('./GT.push');
  3. var Target = require('./getui/Target');
  4. var APNTemplate = require('./getui/template/APNTemplate');
  5. var BaseTemplate = require('./getui/template/BaseTemplate');
  6. var APNPayload = require('./payload/APNPayload');
  7. var DictionaryAlertMsg = require('./payload/DictionaryAlertMsg');
  8. var SimpleAlertMsg = require('./payload/SimpleAlertMsg');
  9. var NotyPopLoadTemplate = require('./getui/template/NotyPopLoadTemplate');
  10. var LinkTemplate = require('./getui/template/LinkTemplate');
  11. var NotificationTemplate = require('./getui/template/NotificationTemplate');
  12. var PopupTransmissionTemplate = require('./getui/template/PopupTransmissionTemplate');
  13. var TransmissionTemplate = require('./getui/template/TransmissionTemplate');
  14. var SingleMessage = require('./getui/message/SingleMessage');
  15. var AppMessage = require('./getui/message/AppMessage');
  16. var ListMessage = require('./getui/message/ListMessage');
  17. var configFile = require('../../include/commons').CONFIG_FILE;
  18. var config = require('../../resources/config/' + configFile);
  19. var msgStat = require('../../repository/mysql/stats.msg.repo');
  20. var gt = new GeTui(config.geTuiConfig.HOST, config.geTuiConfig.APPKEY, config.geTuiConfig.MASTERSECRET);
  21. var gt_appstore = new GeTui(config.geTuiAppStoreCfg.HOST, config.geTuiAppStoreCfg.APPKEY, config.geTuiAppStoreCfg.MASTERSECRET);
  22. //test
  23. var test = false;
  24. if (test) {
  25. pushAPN('D2016082409','D503F7FCAD88E2268D1094BBC344A6218BE479BB441199555758FD5174ABEB02',1,'1','2','',function(err, result){
  26. if (err) {
  27. console.log(err);
  28. return;
  29. }
  30. console.log(result);
  31. });
  32. }
  33. //test end
  34. function pushAPN(userid, token, type, title, msg, data, handler) {
  35. //APN简单推送
  36. var template = new APNTemplate();
  37. var payload = new APNPayload();
  38. msgStat.getBadgeNumber(userid, function(err, result) {
  39. try {
  40. var alertMsg = new SimpleAlertMsg();
  41. alertMsg.alertMsg = msg;
  42. payload.alertMsg = alertMsg;
  43. payload.badge = result;
  44. payload.contentAvailable = 1;
  45. payload.category = type;
  46. payload.customMsg.payload1 = data;
  47. template.setApnInfo(payload);
  48. var message = new SingleMessage();
  49. message.setData(template);
  50. //推送给企业版App
  51. gt.pushAPNMessageToSingle(config.geTuiConfig.APPID, token, message, function (err, res) {
  52. handler(err, res);
  53. });
  54. //推送给AppStore版App
  55. gt_appstore.pushAPNMessageToSingle(config.geTuiAppStoreCfg.APPID, token, message, function (err, res) {
  56. handler(err, res);
  57. });
  58. } catch (e) {
  59. console.log('pushAPN error:' + e);
  60. }
  61. });
  62. }
  63. function pushAndroid(clientid, type, title, msg, data, status, handler) {
  64. if (status != 1) {
  65. pushAndroidNotify(clientid, type, title, msg, data, handler);
  66. }
  67. pushAndroidTransmission(clientid, type, title, msg, data, handler);
  68. }
  69. function pushAndroidNotify(clientid, type, title, msg, data, handler) {
  70. var transmissionContent = {
  71. pushtype: 'notify',
  72. data: data
  73. }
  74. var template = new NotificationTemplate({
  75. appId: config.geTuiConfig.APPID,
  76. appKey: config.geTuiConfig.APPKEY,
  77. title: title,
  78. text: msg,
  79. logo: '',
  80. isRing: true,
  81. isVibrate: true,
  82. isClearable: true,
  83. transmissionType: 1,
  84. transmissionContent: JSON.stringify(transmissionContent)
  85. });
  86. //个推信息体
  87. var message = new SingleMessage({
  88. isOffline: true, //是否离线
  89. offlineExpireTime: 3600 * 12 * 1000, //离线时间
  90. data: template, //设置推送消息类型
  91. pushNetWorkType: 0 //是否wifi ,0不限,1wifi
  92. });
  93. //接收方
  94. var target = new Target({
  95. appId: config.geTuiConfig.APPID,
  96. clientId: clientid
  97. });
  98. gt.pushMessageToSingle(message, target, function (err, res) {
  99. if (err != null && err.exception != null && err.exception instanceof RequestError) {
  100. var requestId = err.exception.requestId;
  101. console.log(err.exception.requestId);
  102. gt.pushMessageToSingle(message, target, requestId, function (err, res) {
  103. //console.log(err);
  104. handler(err, res);
  105. });
  106. } else {
  107. handler(err, res);
  108. }
  109. });
  110. }
  111. function pushAndroidTransmission(clientid, type, title, msg, data, handler) {
  112. var transmissionContent = {
  113. pushtype: 'transmission',
  114. data: data
  115. }
  116. var template = new TransmissionTemplate({
  117. appId: config.geTuiConfig.APPID,
  118. appKey: config.geTuiConfig.APPKEY,
  119. transmissionType: 2,
  120. transmissionContent: JSON.stringify(transmissionContent)
  121. });
  122. //个推信息体
  123. var message = new SingleMessage({
  124. isOffline: true, //是否离线
  125. offlineExpireTime: 3600 * 12 * 1000, //离线时间
  126. data: template, //设置推送消息类型
  127. pushNetWorkType: 0 //是否wifi ,0不限,1wifi
  128. });
  129. //接收方
  130. var target = new Target({
  131. appId: config.geTuiConfig.APPID,
  132. clientId: clientid
  133. });
  134. gt.pushMessageToSingle(message, target, function (err, res) {
  135. console.log(res);
  136. if (err != null && err.exception != null && err.exception instanceof RequestError) {
  137. var requestId = err.exception.requestId;
  138. console.log(err.exception.requestId);
  139. gt.pushMessageToSingle(message, target, requestId, function (err, res) {
  140. console.log(err);
  141. //handler(err, res);
  142. });
  143. } else {
  144. //handler(err, res);
  145. }
  146. });
  147. }
  148. module.exports.pushAPN = pushAPN;
  149. module.exports.pushAndroid = pushAndroid;