jgPush.js 11 KB

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