位置: IT常识 - 正文

uniapp APP消息推送方案(uniapp 信息推送)

编辑:rootadmin
uniapp APP消息推送方案

推荐整理分享uniapp APP消息推送方案(uniapp 信息推送),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniappapp消息推送,uniapp APP消息推送方案,uni-app消息推送,uniappapp消息推送,uni app推送,uniapp定时推送提醒消息,uni-app消息推送,uniapp APP消息推送方案,内容如对您有帮助,希望把文章链接给更多的朋友!

提示:本文实例消息推送使用uniapp官方的unipush推送:

项目场景:该项目是uniapp + uniCloud 项目,APP端的消息推送使用 html+ 与原生实现交互

1.开通推送消息

– uniapp 中的manifest.json文件中找到App模块配置,勾选push消息推送模块 – dcloud开发者中心后台开通unipush功能及各种配置项 – 安卓离线消息推送是需要配置各大厂商,IOS离线不需要,但需要推送证书

2.判断手机权限uniapp APP消息推送方案(uniapp 信息推送)

- 需求:判断是否开启通知权限,跳转对应设置页

/** * 设置手机通知权限 */ setPermissionsInform() { // #ifdef APP-PLUS if (plus.os.name == 'Android') { // 判断是Android var main = plus.android.runtimeMainActivity(); var pkName = main.getPackageName(); var uid = main.getApplicationInfo().plusGetAttribute("uid"); var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat"); //android.support.v4升级为androidx if (NotificationManagerCompat == null) { NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat"); } var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled(); // 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置 if (!areNotificationsEnabled) { 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); } } }); } } else if (plus.os.name == 'iOS') { // 判断是ISO var isOn = undefined; var types = 0; var app = plus.ios.invoke('UIApplication', 'sharedApplication'); var settings = plus.ios.invoke(app, 'currentUserNotificationSettings'); if (settings) { types = settings.plusGetAttribute('types'); plus.ios.deleteObject(settings); } else { types = plus.ios.invoke(app, 'enabledRemoteNotificationTypes'); } plus.ios.deleteObject(app); isOn = (0 != types); if (isOn == false) { 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); } } }); } } // #endif } , /**可以将该方法放在APP.vue文件的onShow生命周期或是消息中心的onShow中去判断用户是否开启通知权限

-- Android跳转系统设置Settings的各个界面_Chandler丶的博客-CSDN博客

3.推送消息到手机APP:

需求:当有消息推送时,推送到手机状态栏中

3.1 获取客户端推送标识信息 cid// 必须要获取到cid后才能接收推送信息 const cid = plus.push.getClientInfo() console.log(cid);3.2 创建推送消息//plus.push.createMessage( content, payload, option );//在本地直接创建推送消息,并添加到系统消息中心。content: ( String ) 必选消息显示的内容,在系统通知中心中显示的文本内容。payload: ( String | Object ) 可选消息承载的数据,可根据业务逻辑自定义数据格式。options: ( MessageOptions ) 可选创建消息的额外参数,参考https://www.html5plus.org/doc/zh_cn/push.html#plus.push.MessageOptionsplus.push.createMessage('我是你爸爸!'); // 创建本地推送plus.runtime.setBadgeNumber(1) // 设置角标3.3 消息事件

- 实现手机状态栏推送功能逻辑,在APP.vue中添加推送消息事件监听器 ,监听到有新消息时,使用createMessage API创建消息,添加点击事件 点击后进行不同操作

对于安卓的在线和离线消息以及IOS的离线消息都是走的click监听事件。也就是说可以直接将消息推送到手机通知栏中,然后点击消息的时候,可以触发应用监听的点击事件,跳转到对应页面。receive事件,可以监听到后端推送过来的消息,触发相应的回调,使用createMessage在本地创建消息// 添加推送消息事件监听器 clickplus.push.addEventListener("click",(msg)=>{ console.log('msg............',msg); if(msg.payload){ // 点击跳转对应页面 uni.navigateTo({ url:msg.payload }) }},false)// 添加推送消息事件监听器 receiveplus.push.addEventListener("receive",(msg)=>{ if("LocalMSG" == msg.payload){ }else{ if(msg.type=='receive'){ var options = {cover:false,title:msg.title}; // 创建本地推送 plus.push.createMessage(msg.content, msg.payload, options ); } }},false)4. 消息页面的数据及数字角标

- 需求:当有消息推送时,要更新消息中心页面的数据和数字角标

1.在项目中定义请求消息列表的方法,将响应的数据存储到vuex中,供消息中心页面使用

// 消息页面的数据async getMsgData(){ let res = await this.$callFunction("userContent/getMsgType") this.$u.vuex("msgData", res.result.data); let msgCount = 0 // 数字角标 res.result.data.map((item)=>{ if(item._id!=5){ msgCount+=item.no_read_total } }) // 给tabbar的角标赋值 let tabbar_data = JSON.parse(JSON.stringify(this.TabbarList)) tabbar_data[3].count = msgCount this.$u.vuex("TabbarList", tabbar_data);

2.监听消息的推送,如果接收到消息就更新消息列表数据和角标数字

// --------监听推送的状态----------plus.push.addEventListener("receive", (msg) => { console.log(getApp().globalData.followCount); if(msg.payload.data.msg_type==501){ uni.$emit('followUpdate','update'); } let {content, payload, options} = msgCreate(msg) plus.push.createMessage(content, payload, options); this.getMsgData()}, false)该功能的实现,主要重点在于数据的全局的传值,以及监听数据的变化,实时更新数据可以使用vuex或globalData来存储数据nuve页面中可以使用$emit $on 进行全局监听
本文链接地址:https://www.jiuchutong.com/zhishi/289771.html 转载请保留说明!

上一篇:微信小程序实现分享至朋友圈的功能(微信小程序实现支付功能)

下一篇:JS如何监听一个变量改变?(js监听hover)

  • 苹果手机人脸识别怎么设置(苹果手机人脸识别突然不能用了)

    苹果手机人脸识别怎么设置(苹果手机人脸识别突然不能用了)

  • 苹果手机微信麦克风启用不成功(苹果手机微信麦克风启用不成功怎么办)

    苹果手机微信麦克风启用不成功(苹果手机微信麦克风启用不成功怎么办)

  • 华为免提对方就听不见(华为开免提对方能听到,关闭对方就听不到了)

    华为免提对方就听不见(华为开免提对方能听到,关闭对方就听不到了)

  • iphone11哪些功能需要关闭(iphone 11有些什么功能)

    iphone11哪些功能需要关闭(iphone 11有些什么功能)

  • 苹果双击home键是什么功能(苹果双击home键屏幕下拉有什么用)

    苹果双击home键是什么功能(苹果双击home键屏幕下拉有什么用)

  • 华为nova2plus怎么录屏(华为nova2plus怎么开启volte)

    华为nova2plus怎么录屏(华为nova2plus怎么开启volte)

  • 多媒体计算机是由什么组成(多媒体计算机是多媒体教室的核心)

    多媒体计算机是由什么组成(多媒体计算机是多媒体教室的核心)

  • 运营商虚商是什么意思(运营商虚商是什么)

    运营商虚商是什么意思(运营商虚商是什么)

  • ipad网速慢的解决办法(ipad网速慢是怎么回事)

    ipad网速慢的解决办法(ipad网速慢是怎么回事)

  • 怎么改微信朋友圈位置(怎么改微信朋友圈地址位置)

    怎么改微信朋友圈位置(怎么改微信朋友圈地址位置)

  • 苹果蓝牙耳机怎么分左右(苹果蓝牙耳机怎么配对安卓)

    苹果蓝牙耳机怎么分左右(苹果蓝牙耳机怎么配对安卓)

  • 咪咕视频怎么用wifi看(咪咕视频怎么用微信支付)

    咪咕视频怎么用wifi看(咪咕视频怎么用微信支付)

  • 双十一是什么时候(双十一是什么时候开始火的)

    双十一是什么时候(双十一是什么时候开始火的)

  • iphone5怎样录屏(苹果5怎么样录屏)

    iphone5怎样录屏(苹果5怎么样录屏)

  • 结构化方法的基本原则(结构化方法的基本要点)

    结构化方法的基本原则(结构化方法的基本要点)

  • qq账号注销了还能恢复吗(qq注销之后还能登录吗)

    qq账号注销了还能恢复吗(qq注销之后还能登录吗)

  • 华为aicmera是什么型号(华为aim是什么意思)

    华为aicmera是什么型号(华为aim是什么意思)

  • 苹果手机自动跳静音怎么办(苹果手机自动跳屏怎么回事)

    苹果手机自动跳静音怎么办(苹果手机自动跳屏怎么回事)

  • 华为mate20外屏碎了(华为mate20外屏碎了换屏要多少钱)

    华为mate20外屏碎了(华为mate20外屏碎了换屏要多少钱)

  • 企业收款二维码怎么弄(企业收款二维码怎么制作)

    企业收款二维码怎么弄(企业收款二维码怎么制作)

  • Mac升级后出现facetime相机不可用该怎么办?(macos升级报错)

    Mac升级后出现facetime相机不可用该怎么办?(macos升级报错)

  • Win11资源管理器的样式如何切换?Win11资源管理器样式切换方法(win11资源管理器卡死)

    Win11资源管理器的样式如何切换?Win11资源管理器样式切换方法(win11资源管理器卡死)

  • React函数式组件传值(父子,兄弟,祖先等)以及父子之间方法的调用。(react函数组件useeffect)

    React函数式组件传值(父子,兄弟,祖先等)以及父子之间方法的调用。(react函数组件useeffect)

  • 大数据项目之数仓相关知识(大数据项目之数据采集)

    大数据项目之数仓相关知识(大数据项目之数据采集)

  • 通货膨胀有什么危害?
  • 专用发票超过360天认证期怎么办?
  • 投资收益包括哪些项目
  • 记账凭证背面怎么填写
  • 领用自产产品用于职工食堂
  • 抄报税校验失败调用系统服务出错怎么办
  • 残保金是谁支付给单位?
  • 房地产开发企业预收款预缴增值税
  • 记载资金的账簿要交印花税吗
  • 周转材料低值易耗品科目借方登记低值易耗品的减少
  • 股权转让中土地增值是否交纳个人所得税
  • 购买设备的增值税是支出吗
  • 淘宝企业店铺的钱会打到哪里
  • 外出什么意思?
  • 投资者减除费用可以填0吗
  • 信用减值损失属于什么会计要素
  • 开普票可以抵扣进项票
  • 技术转让收入属于主营业务收入吗
  • 机械租赁费如何入账科目
  • 跨年度多计提的租金怎么冲
  • 税务非正常户罚款多少
  • 如何调整账务
  • 企业资产损失会计处理
  • 土地增值税的土地成本要扣除增值税吗
  • 成品油属于什么费用
  • 个体工商户和小微企业的区别
  • 股权无偿赠与协议书范本
  • sudo命令无法执行
  • php foreach()
  • 内部审计范围有哪些
  • 计提企业所得税会计分录怎么做
  • 固定资产多少可以费用化
  • 业务招待费能不能计入销售费用
  • php的框架有哪些
  • 基于thinkphp的cms
  • spring集成xfire
  • 大数据热点话题
  • 预付采购材料款60000元
  • 汇算清缴期间费用保险费是什么
  • 分公司非独立核算怎么做账
  • 固定资产入账的方式
  • java数组合并变字符串
  • python 自定义异常
  • 公司扣除保险费会计分录
  • 微店企业店铺和个人店铺的区别
  • 个税申报工资比实发工资高
  • 如何区分借贷方和负债方
  • 土地转移是什么意思
  • 待抵扣进项税额和进项税额的区别
  • 股东以私人名义出资
  • 财务费用手续费借贷方向
  • 居民企业只就其境内全部所得纳税
  • 出口产品开票注意事项
  • 出差补贴算工资吗
  • 人力资源公司的盈利模式
  • 小规模购入固定资产怎么做账
  • 公司日常费用支出表怎么做
  • 企业发生的经济业务主要有哪些
  • 未发货先开发票
  • 注册资本可以是欧元吗
  • 基于存储过程的计算
  • windows server2008 64位没有安装音频怎么办?
  • 注册表隐藏桌面图标
  • windowsserver2008r2密码重置
  • linux系统 虚拟机
  • 安装和配置eclipse集成开发环境
  • realpopup.exe - realpopup是什么进程
  • Win10预览版怎么变回正式版
  • win8系统的运行在哪里打开
  • 清除win7更新缓存
  • linux更新配置
  • [置顶]bilinovel
  • opengl模块加载失败
  • array 和list
  • Metaio in Unity3d 教学--- 一. 搭建环境,运行官方案例
  • 普通话的对话
  • comparable接口怎么用
  • 莱钢生产什么产品
  • 开发票500以下
  • 2016年营改增房屋租赁
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设