当前位置: 首页 > news >正文

uniapp对接极光消息推送

  • 登陆极光官方文档极光推送-领先的客户互动和营销科技服务商,助力企业运营、增长和变现注册应用获取appKey

        

  • 选择服务

  • 配置包名

  • 获取到appKey

  • 接下来就是进行uniapp 极光推送的集成了 进行uniapp集成需要极光JPush官方SDK和极光JCore官方SDK
  • JPush:极光推送 JPush 官方 SDK - DCloud 插件市场
  • JCore:极光推送 JCore 官方 SDK - DCloud 插件市场

  • 然后再manifest中使用插件

  • 随后在manifest最下面点击源码视图,对jcore和jpush进行一下配置

  • 后进行app模块配置

  • 各个数据配置完成之后,就是对极光推送的数据进行推送监听,在app.vue的根文件填充以下代码:
<script>var jpushModule = uni.requireNativePlugin("JG-JPush");export default {onLaunch: function() {console.log('App Launch')// #ifdef APP-PLUSjpushModule.setLoggerEnable(true);// 初始化函数jpushModule.initJPushService();jpushModule.addConnectEventListener(result=>{let connectEnable = result.connectEnableconsole.log("jpush连接", connectEnable)})jpushModule.getRegistrationID(result => {console.log("注册ID.....",result)this.registerID = result.registerIDuni.showToast({title:result.registerID,icon:"success",})})jpushModule.isPushStopped(result=>{let code = result.codeconsole.log('连接状态回调',result)});// 设置别名jpushModule.setAlias({'alias' : 'coder','sequence': 1})jpushModule.addNotificationListener(result=>{console.log('result--', result);let notificationEventType = result.notificationEventTypelet messageID = result.messageIDlet title = result.titlelet content = result.contentlet extras = result.extrasconsole.log('通知事件回调',result)// 推送一个本地通知jpushModule.addLocalNotification({messageID,title,content,extras})if (notificationEventType === 'notificationOpened') {console.log('点击跳转--');uni.navigateTo({url: `/pages/index/test/test?id=${extras.testId}`})}})//#endif},onShow: function() {console.log('App Show')this.getNotificationEnabled()// #ifdef APP-PLUSjpushModule.addNotificationListener(result=>{let extras = result.extrasconsole.log('onshow通知事件回调',result)if (result.notificationEventType === 'notificationOpened') {console.log('点击跳转--');uni.navigateTo({url: `/pages/index/test/test?id=${extras.testId}`})}})// #endif},onHide: function() {console.log('App Hide')},methods: {/* 1. 首先要判断用户是否打开通知权限 */getNotificationEnabled(){ if(uni.getSystemInfoSync().platform == "ios"){jpushModule.requestNotificationAuthorization((result)=>{let status = result.statusif (status < 2) {this.noticMsgTool()}})}else{jpushModule.isNotificationEnabled((result)=>{ //判断android是否打开权限if(result.code == 0){//如果为0则表示 未打开通知权限 this.noticMsgTool()}})}},noticMsgTool(){if(uni.getSystemInfoSync().platform == "ios"){//苹果打开对应的通知栏uni.showModal({title: '通知权限开启提醒',content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',showCancel: false,confirmText: '去设置',success: function(res) {if (res.confirm) {var app = plus.ios.invoke('UIApplication', 'sharedApplication');var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');plus.ios.invoke(app, 'openURL:', setting);plus.ios.deleteObject(setting);plus.ios.deleteObject(app);}}});}else{//android打开对应的通知栏var main = plus.android.runtimeMainActivity();var pkName = main.getPackageName();var uid = main.getApplicationInfo().plusGetAttribute("uid");uni.showModal({title: '通知权限开启提醒',content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',showCancel: false,confirmText: '去设置',success: function(res) {if (res.confirm) {var Intent = plus.android.importClass('android.content.Intent');var Build = plus.android.importClass("android.os.Build");//android 8.0引导  if (Build.VERSION.SDK_INT >= 26) {var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);} else if (Build.VERSION.SDK_INT >= 21) { //android 5.0-7.0  var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');intent.putExtra("app_package", pkName);intent.putExtra("app_uid", uid);} else { //(<21)其他--跳转到该应用管理的详情页  intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);intent.setData(uri);}// 跳转到该应用的系统通知设置页  main.startActivity(intent);}}});}}}}
</script>
  • 到此极光推送的uniapp集成就算是完成了,接下来是进行真机调试,首先要进行自定义基座的打包

  • 座打包完成之后,插上手鸡,选择运行-运行到手机或模拟器-运行到【俺桌的】基座-自定义基座,不能运行到真鸡,你非要运行那你就运行吧

  • 完了就回极光进行消息推送,你就推吧一推一个不吱声

完结,撒花!!!

http://www.dtcms.com/a/331299.html

相关文章:

  • 【CLR via C#(第3版)阅读笔记】类型基础
  • [特殊字符]走进华为,解锁商业传奇密码
  • K8s学习----Namespace:资源隔离与环境管理的核心机制
  • 渲染 opentype 多个字符的文本,并设置文本的渲染开始位置
  • Warm-Flow 1.8.0 重大更新
  • Lua 脚本在 Redis 中的应用
  • vivo Pulsar 万亿级消息处理实践(4)-Ansible运维部署
  • 河南萌新联赛2025第(五)场:信息工程大学补题
  • 飞书文档定时自动同步至百炼知识库
  • ESP32 I2S音频总线学习笔记(六):DIY蓝牙音箱教程
  • CVPR 2025 | 北大团队SLAM3R:单目RGB长视频实时重建,精度效率双杀!
  • 在mysql> 下怎么运行 .sql脚本
  • C#WPF实战出真汁00--项目介绍
  • 极速开发新体验_Vite构建工具详解
  • 使用YOLOv13进行钢板表面缺陷检测
  • Python之Django使用技巧(附视频教程)
  • 云手机都具有哪些特点?
  • Ollama如何分别使用2张H100GPU和4张A100部署GPT-OSS-120B全指南:硬件配置与负载均衡实战
  • Linux命令大全-zip命令
  • 嵌入式学习(day27)多任务进程
  • 接口测试与常用接口测试工具详解
  • CMake message()使用指南
  • SpringMVC(详细版从入门到精通)未完
  • 微前端-解决MicroApp微前端内存泄露问题
  • python bokeh
  • 为什么在函数内部,有时无法访问外部的变量?
  • 从0-1学习Java(三)快速了解字符串、数组、“==“与equals比较
  • 基于STM32的Air780短信发送
  • 【每天一个知识点】生物的数字孪生
  • C++模板特化、分离编译