jgPush.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. // 引用方式
  2. var jpushModule = null
  3. //#ifdef APP-PLUS
  4. var jpushModule = uni.requireNativePlugin("JG-JPush");
  5. //#endif
  6. // 开启 debug 模式,默认是关闭
  7. function openDebug() {
  8. jpushModule.setLoggerEnable(true);
  9. }
  10. // 关闭 debug 模式,默认是关闭
  11. function closeDebug() {
  12. jpushModule.setLoggerEnable(false);
  13. }
  14. function isNotificationEnabled(skBack){
  15. jpushModule.isNotificationEnabled(result=>{//number
  16. console.log('检查当前应用的通知开关是否开启 =>',result)
  17. skBack(result.code)
  18. });
  19. }
  20. function requestLocationAuthorization(skBack){
  21. jpushModule.requestLocationAuthorization(result=>{//number
  22. console.log('定位权限',result)
  23. skBack(result)
  24. });
  25. }
  26. function requestNotificationAuthorization(skBack){
  27. jpushModule.requestNotificationAuthorization(result=>{//number
  28. console.log('是否打开通知权限',result)
  29. skBack(result)
  30. });
  31. }
  32. // 获取 RegistrationID,只有当应用程序成功注册到 JPush 的服务器时才返回对应的值,否则返回空字符串
  33. function getRegistrationID(skBack) {
  34. jpushModule.getRegistrationID(result=>{
  35. // code number 状态码 0 - 成功, 1011 - iOS模拟器调用会报此错误
  36. // registerID string 返回的 registrationID
  37. console.log('【sk】获取 RegistrationID=>',result)
  38. skBack(result.registerID)
  39. })
  40. }
  41. // 跳转至系统设置页面,0 - 成功 1 - 失败
  42. function openSettingsForNotification() {
  43. jpushModule.openSettingsForNotification((result)=>{
  44. // code number 0 - 成功 1 - 失败
  45. console.log('【sk】跳转至系统设置页面result=>',result.code)
  46. })
  47. }
  48. // 初始化SDK iOS 说明:如果在mainfest.json里 将JPUSH_DEFAULTINITJPUSH_IOS值配置为"true",插件内部将默认初始化JPush,用户则不需要调用该初始化方法。
  49. function initJPushService() {
  50. console.log(jpushModule)
  51. jpushModule.initJPushService()
  52. }
  53. // 连接状态回调,true - 已连接, false - 未连接
  54. function addConnectEventListener(skBack) {
  55. jpushModule.addConnectEventListener(result=>{
  56. // connectEnable boolean true - 已连接, false - 未连接
  57. console.log('【sk】连接状态回调=>',result.connectEnable)
  58. skBack(result.connectEnable);
  59. })
  60. }
  61. // 通知事件回调
  62. function addNotificationListener(skBack) {
  63. jpushModule.addNotificationListener(result=>{
  64. // messageID string 唯一标识通知消息的 ID
  65. // title string 对应 Portal 推送通知界面上的“通知标题”字段
  66. // content string 对应 Portal 推送通知界面上的“通知内容”字段
  67. // badge string 对应 Portal 推送通知界面上的可选设置里面的“badge”字段 (ios only)
  68. // ring string 推送通知界面上的可选设置里面的“sound”字段 (ios only)
  69. // extras dictionary 对应 Portal 推送消息界面上的“可选设置”里的附加字段
  70. // iOS dictionary 对应原生返回的通知内容,如需要更多字段请查看该字段内容
  71. // android dictionary 对应原生返回的通知内容,如需要更多字段请查看该字段内容
  72. // notificationEventType string 分为notificationArrived和notificationOpened两种
  73. console.log('【sk】通知事件回调result=>',result)
  74. skBack(result);
  75. })
  76. }
  77. // 自定义消息事件回调
  78. function addCustomMessageListener(skBack) {
  79. jpushModule.addCustomMessageListener(result=>{
  80. // messageID string 唯一标识通知消息的 ID
  81. // content string 对应 Portal 推送通知界面上的“通知内容”字段
  82. // extras dictionary 对应 Portal 推送消息界面上的“可选设置”里的附加字段
  83. console.log('【sk】自定义消息事件回调result=>',result)
  84. skBack(result);
  85. })
  86. }
  87. // 应用内消息回调
  88. function addInMessageListener(skBack) {
  89. jpushModule.addInMessageListener(result=>{
  90. // eventType string show - 应用内消息展示 disappear - 应用内消息已消失 click - 应用内消息点击
  91. // messageType string 消息类型, eventType 不为 disappear时返回, inMessageNoti - 通知类型的inMessage
  92. // content dictionary 应用内消息内容, eventType 不为 disappear 时返回
  93. console.log('【sk】应用内消息回调result=>',result)
  94. skBack(result);
  95. })
  96. }
  97. // 本地通知事件回调
  98. function addLocalNotificationListener(skBack) {
  99. jpushModule.addLocalNotificationListener(result=>{
  100. // messageID string 唯一标识通知消息的ID
  101. // title string 对应“通知标题”字段
  102. // content string 对应“通知内容”字段
  103. // extras dictionary 对应“附加内容”字段
  104. console.log('【sk】本地通知事件回调result=>',result)
  105. skBack(result);
  106. })
  107. }
  108. // 添加一个本地通知
  109. function addLocalNotification(e) {
  110. console.log('添加一个本地通知',e)
  111. jpushModule.addLocalNotification({
  112. messageID: e.messageID ? e.messageID : '', // 唯一标识通知消息的ID
  113. title: e.title ? e.title : '', // 对应“通知标题”字段
  114. content: e.content ? e.content : '', // 对应“通知内容”字段
  115. extras: e.extras ? e.extras : {name: '', age: ''} // 对应“附加内容”字段
  116. })
  117. }
  118. // 移除指定的本地通知
  119. function removeLocalNotification(e) {
  120. jpushModule.removeLocalNotification({
  121. messageID: e.messageID ? e.messageID : '' // 唯一标识通知消息的ID
  122. })
  123. }
  124. // 移除所有的本地通知
  125. function clearLocalNotifications() {
  126. jpushModule.clearLocalNotifications()
  127. }
  128. // 标签别名事件回调
  129. function addTagAliasListener(skBack) {
  130. jpushModule.addTagAliasListener(result=>{
  131. // code number 请求状态码 0 - 成功
  132. // sequence number 请求时传入的序列号,会在回调时原样返回
  133. // tags StringArray 执行tag数组操作时返回
  134. // tag string 执行查询指定tag(queryTag)操作时会返回
  135. // tagEnable boolean 执行查询指定tag(queryTag)操作时会返回是否可用
  136. // alias string 对alias进行操作时返回
  137. console.log('【sk】标签别名事件回调result=>',result)
  138. skBack(result);
  139. })
  140. }
  141. // 新增标签
  142. function addTags(e) {
  143. jpushModule.addTags({
  144. 'tags': e.tags ? e.tags : [], // StringArray string类型的数组
  145. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  146. })
  147. }
  148. // 覆盖标签
  149. function updateTags(e) {
  150. jpushModule.updateTags({
  151. 'tags': e.tags ? e.tags : [], // StringArray string类型的数组
  152. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  153. })
  154. }
  155. // 删除指定标签
  156. function deleteTags(e) {
  157. jpushModule.deleteTags({
  158. 'tags': e.tags ? e.tags : [], // StringArray string类型的数组
  159. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  160. })
  161. }
  162. // 清除所有标签
  163. function cleanTags(e) {
  164. jpushModule.cleanTags({
  165. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  166. })
  167. }
  168. // 查询指定 tag 与当前用户绑定的状态
  169. function queryTag(e) {
  170. jpushModule.queryTag({
  171. 'tag': e.tag ? e.tag : '', // string 需要查询的标签
  172. 'sequence': e.sequence ? sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  173. })
  174. }
  175. // 查询所有标签
  176. function getAllTags(e) {
  177. jpushModule.getAllTags({
  178. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  179. })
  180. }
  181. // 设置别名
  182. function setAlias(e) {
  183. console.log('设置别名',e)
  184. jpushModule.setAlias({
  185. 'alias': e.alias ? e.alias : '', // string 有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
  186. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  187. })
  188. }
  189. // 删除别名
  190. function deleteAlias(e) {
  191. jpushModule.deleteAlias({
  192. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  193. })
  194. }
  195. // 查询别名
  196. function queryAlias(e) {
  197. jpushModule.queryAlias({
  198. 'sequence': e.sequence ? e.sequence : 1 // number 请求时传入的序列号,会在回调时原样返回
  199. })
  200. }
  201. // 开启 CrashLog 上报
  202. function initCrashHandler() {
  203. jpushModule.initCrashHandler()
  204. }
  205. // 设置地理围栏的最大个数
  206. function setMaxGeofenceNumber(e) {
  207. jpushModule.setMaxGeofenceNumber(e.geofenceNumber ? e.geofenceNumber : 10) // 默认值为 10 ,iOS系统默认地理围栏最大个数为20
  208. }
  209. // 删除指定id的地理围栏
  210. function deleteGeofence(e) {
  211. jpushModule.deleteGeofence(e.geofence ? e.geofence : '') // 删除指定id的地理围栏
  212. }
  213. // 设置 Badge
  214. function setBadge(e) {
  215. jpushModule.setBadge(e.badge ? e.badge : 0) // number
  216. }
  217. // 设置手机号码
  218. function setMobileNumber(e) {
  219. jpushModule.setMobileNumber({
  220. sequence: e.sequence ? e.sequence : 1, // number 请求时传入的序列号,会在回调时原样返回
  221. mobileNumber: e.mobileNumber ? e.mobileNumber : '' // string 手机号码 会与用户信息一一对应。可为空,为空则清除号码。
  222. })
  223. }
  224. // 设置手机号码回调
  225. function addMobileNumberListener(skBack) {
  226. jpushModule.addMobileNumberListener(result=>{
  227. // code number 状态码 0 - 成功
  228. // sequence number 请求时传入的序列号,会在回调时原样返回
  229. console.log('【sk】设置手机号码回调result=>',result)
  230. skBack(result);
  231. })
  232. }
  233. export default {
  234. openDebug: openDebug,
  235. closeDebug: closeDebug,
  236. getRegistrationID: getRegistrationID,
  237. openSettingsForNotification: openSettingsForNotification,
  238. initJPushService: initJPushService,
  239. isNotificationEnabled: isNotificationEnabled,
  240. addConnectEventListener: addConnectEventListener,
  241. addNotificationListener: addNotificationListener,
  242. addCustomMessageListener: addCustomMessageListener,
  243. addInMessageListener: addInMessageListener,
  244. addLocalNotificationListener: addLocalNotificationListener,
  245. addLocalNotification: addLocalNotification,
  246. removeLocalNotification: removeLocalNotification,
  247. clearLocalNotifications: clearLocalNotifications,
  248. addTagAliasListener: addTagAliasListener,
  249. addTags: addTags,
  250. updateTags: updateTags,
  251. deleteTags: deleteTags,
  252. cleanTags: cleanTags,
  253. queryTag: queryTag,
  254. getAllTags: getAllTags,
  255. setAlias: setAlias,
  256. deleteAlias: deleteAlias,
  257. queryAlias: queryAlias,
  258. initCrashHandler: initCrashHandler,
  259. setMaxGeofenceNumber: setMaxGeofenceNumber,
  260. deleteGeofence: deleteGeofence,
  261. setBadge: setBadge,
  262. setMobileNumber: setMobileNumber,
  263. addMobileNumberListener: addMobileNumberListener,
  264. locationServicesEnabled: ()=> jpushModule.locationServicesEnabled(),
  265. getLocationAuthorizationStatus: ()=> jpushModule.getLocationAuthorizationStatus(),
  266. requestLocationAuthorization: requestLocationAuthorization,
  267. requestNotificationAuthorization: requestNotificationAuthorization
  268. }