当前位置:   article > 正文

uniapp对接极光推送_uniapp 极光推送

uniapp 极光推送

效果图:

一、登录极光官网

        进入【服务中心】-【开发者平台】

创建应用:【概览】- 【创建应用】,填写应用名称和图标(填写项目名称,项目logo就行,也可填写其他的)

选择【消息推送】服务,点击下一步

设置应用包名(图中仅为示例,最好是×××.×××.××格式),点击下一步

点击【推送设置】可查看android和ios的AppKey和Secret,后续需要使用

二、安装和配置uniapp极光插件

1. 安装JPush插件

2. 安装JCore插件

3. 导入插件到项目

4. 插件配置

打卡manifest.json的源码视图,找到 nativePlugins 节点
(1) 配置JG-JPUSH,设置Android和ios的应用包名

(2) 配置JG-JCore,设置Android和ios的应用包名极光官网信息的AppKey

三、编写代码

在App.vue中编写如下代码:(注意:极光推送信息通知回调中那个路径要改,路径就是你点击通知会打开到这个路径对应的页面)

  1. <script>
  2. const jpushModule = uni.requireNativePlugin('JG-JPush');
  3. export default {
  4. onLaunch() {
  5. // #ifdef APP-PLUS
  6. jpushModule.initJPushService();
  7. jpushModule.setLoggerEnable(true);
  8. // // 设置别名
  9. // jpushModule.setAlias({
  10. // alias: '',
  11. // sequence: 1
  12. // });
  13. this.getNotificationEnabled();
  14. //监听 极光推送连接状态
  15. jpushModule.addConnectEventListener((result) => {
  16. console.log('监听 极光推送连接状态', result);
  17. let connectEnable = result.connectEnable;
  18. uni.$emit('connectStatusChange', connectEnable);
  19. });
  20. //极光推送的消息通知回调
  21. jpushModule.addNotificationListener((result) => {
  22. jpushModule.setBadge(0);
  23. plus.runtime.setBadgeNumber(0);
  24. let notificationEventType = result.notificationEventType;
  25. // let woopId = result.extras && result.extras.dataType === 'woop' && result.extras.value;
  26. console.log('通知', result, notificationEventType);
  27. // 点击事件
  28. if (notificationEventType == 'notificationOpened') {
  29. uni.navigateTo({
  30. url: '/pages/mine-merchant/order-management/order-management'
  31. });
  32. }
  33. });
  34. uni.$on('connectStatusChange', (connectStatus) => {
  35. var connectStr = '';
  36. if (connectStatus == true) {
  37. connectStr = '已连接';
  38. this.getRegistrationID();
  39. } else {
  40. connectStr = '未连接';
  41. }
  42. console.log('监听到了连接状态变化 --- ', connectStr);
  43. });
  44. //#endif
  45. },
  46. methods: {
  47. getRegistrationID() {
  48. jpushModule.getRegistrationID((result) => {
  49. let registerID = result.registerID;
  50. console.log('获取registerID', registerID);
  51. this.setSto('registerID', registerID);
  52. });
  53. },
  54. getNotificationEnabled() {
  55. if (uni.getSystemInfoSync().platform == 'ios') {
  56. jpushModule.requestNotificationAuthorization((result) => {
  57. let status = result.status;
  58. if (status < 2) {
  59. this.noticMsgTool();
  60. }
  61. });
  62. } else {
  63. jpushModule.isNotificationEnabled((result) => {
  64. console.log('判断android是否打开权限1:true,0:false', result);
  65. if (result.code == 0) {
  66. //如果为0则表示 未打开通知权限
  67. this.noticMsgTool();
  68. }
  69. });
  70. }
  71. },
  72. noticMsgTool() {
  73. if (uni.getSystemInfoSync().platform == 'ios') {
  74. //苹果打开对应的通知栏
  75. uni.showModal({
  76. title: '通知权限开启提醒',
  77. content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
  78. showCancel: false,
  79. confirmText: '去设置',
  80. success: function(res) {
  81. if (res.confirm) {
  82. var app = plus.ios.invoke('UIApplication', 'sharedApplication');
  83. var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');
  84. plus.ios.invoke(app, 'openURL:', setting);
  85. plus.ios.deleteObject(setting);
  86. plus.ios.deleteObject(app);
  87. }
  88. }
  89. });
  90. } else {
  91. //android打开对应的通知栏
  92. var main = plus.android.runtimeMainActivity();
  93. var pkName = main.getPackageName();
  94. var uid = main.getApplicationInfo().plusGetAttribute('uid');
  95. uni.showModal({
  96. title: '通知权限开启提醒',
  97. content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
  98. showCancel: false,
  99. confirmText: '去设置',
  100. success: function(res) {
  101. if (res.confirm) {
  102. var Intent = plus.android.importClass('android.content.Intent');
  103. var Build = plus.android.importClass('android.os.Build');
  104. //android 8.0引导
  105. if (Build.VERSION.SDK_INT >= 26) {
  106. var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
  107. intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
  108. } else if (Build.VERSION.SDK_INT >= 21) {
  109. //android 5.0-7.0
  110. var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
  111. intent.putExtra('app_package', pkName);
  112. intent.putExtra('app_uid', uid);
  113. } else {
  114. //(<21)其他--跳转到该应用管理的详情页
  115. intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  116. var uri = Uri.fromParts('package', mainActivity.getPackageName(), null);
  117. intent.setData(uri);
  118. }
  119. // 跳转到该应用的系统通知设置页
  120. main.startActivity(intent);
  121. }
  122. }
  123. });
  124. }
  125. }
  126. },
  127. }
  128. </script>

四、调试运行

【Hx中运行】=>【运行到手机或模拟器】=>【制作自定义调试基座】

五、测试推送

结束,手机上就会收到推送通知

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/950315
推荐阅读
相关标签
  

闽ICP备14008679号