uniapp生成app包引导用户开启通知权限和热更新

uniapp生成app包引导用户开启通知权限和热更新

引导用户开启通知权限

export function setPermissions() {// #ifdef APP-PLUS if (plus.os.name == '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");if (NotificationManagerCompat == null) {NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat");}var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();if (!areNotificationsEnabled) {uni.showModal({title: '通知权限开启提醒',content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',showCancel: true,confirmText: '去设置',confirmColor: '#36d',cancelText: '暂不',cancelColor: '#999',success: function (res) {if (res.confirm) {var Intent = plus.android.importClass('android.content.Intent');var Build = plus.android.importClass("android.os.Build");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) {var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');intent.putExtra("app_package", pkName);intent.putExtra("app_uid", uid);} else {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') {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: true,confirmText: '去设置',confirmColor: '#36d',cancelText: '暂不',cancelColor: '#999',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 
}

热更新包

	//安装热更新onMounted(() => {//#ifdef APP-PLUSlet baseInfo = uni.getAppBaseInfo();plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {getApp().globalData.version = widgetInfo.version;let param_data = {version: widgetInfo.version, //版本号os_name: plus.os.name, //应用名称appid: baseInfo.appId,};uni.request({url: '*****', //接口判断是否为新版本data: param_data,success: result => {var data = result.data.data;if (data.status && data.url) {if (widgetInfo.version != result.data.data.versions) {uni.showModal({title: '发现新版本',content: '确认下载更新',success: res => {if (res.confirm) {//当用户确定更新,执行更新doUpData(data);}},});}}},});});//#endif})
//更新方法
function doUpData(data) {uni.showLoading({title: '更新中……',});console.log('test')uni.downloadFile({url: data.url,success: downloadResult => {uni.hideLoading();if (downloadResult.statusCode == 200) {uni.showModal({title: '',content: '更新成功,确定现在重启吗?',confirmText: '重启',confirmColor: '#EE8F57',success: function(res) {if (res.confirm) {plus.runtime.install(//安装downloadResult.tempFilePath, {force: true,},function(res) {plus.runtime.restart();});}},});}},});
}

然后点击这个打包给后端
在这里插入图片描述
在这里插入图片描述
注意:这个版本号每次打包 必须修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/499786.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI新秀Mistral:“Open AI“ 新时代

最近互联网出现不少类似“下一代openai”、“GPT-4最强竞品”、“法国AI独角兽”、“欧洲的OpenAI”、“微软新宠儿”.... 的文章,都会附带一张图片,就是下面这张: 那么到底发生了什么,出来个什么东西呢?就是本文的主…

Python根据3个点确定两个向量之间的夹角-180度到180方向进行矫正

import cv2 import numpy as np # 读取图片 image cv2.imread(rD:\dmp\cat.jpg) height, width image.shape[:2] # 定义三个定位点(这里假设是图片上的坐标),分别表示原点,向量1终点,向量2终点,下…

C# 获取类型 Type.GetType()

背景 C#是强类型语言,任何对象都有Type,有时候需要使用Type来进行反射、序列化、筛选等,获取Type有Type.GetType, typeof(),object.GetType() 等方法,本文重点介绍Type.GetType()。 系统类型/本程序集内的类型 对于系…

ref和reactive用哪个?

ref和reactive用哪个? 1.🤖GPT🤖:ref和reactive用哪个根据数据类型而定 ref 用于将基本类型的数据(如字符串、数字,布尔值等)转换为响应式数据。使用 ref 定义的数据可以通过 .value 属性访问和修改。 reactive 用于…

二、TensorFlow结构分析(1)

目录 1、TF数据流图 1.1 TensorFlow结构分析 1.2 案例 2、图与TensorBoard 2.1 图结构 2.2 图相关操作 2.2.1 默认图 2.2.2 创建图 2.3 TensorBoard:可视化学习 2.3.1 数据序列化 - events文件 2.3.2 启动TensorBoard 2.4 OP 2.4.1 常见OP 2.4.2 指令…

HTML5:七天学会基础动画网页4

backgorund-size 值与说明 length(单位像素):设置背景图片高度和宽度,第一个值设置宽度,第二个值设置高度,如果只给出一个值,第二个是设置为auto。 percentage(百分比):以父元素的百分比来设置背景图像的宽度和高度&#xff0c…

NLP(一)——概述

参考书: 《speech and language processing》《统计自然语言处理》 宗成庆 语言是思维的载体,自然语言处理相比其他信号较为特别 word2vec用到c语言 Question 预训练语言模型和其他模型的区别? 预训练模型是指在大规模数据上进行预训练的模型,通常…

计算机网络——21拥塞控制原理

拥塞控制原理 概述 拥塞 非正式的定义:“太多的数据需要网络传输,超过了网络的处理能力”与流量控制不同拥塞的表现 分组丢失(路由器缓冲区溢出)分组经历比较长时间的延迟(在路由器的队列中排队) 网络中…

如何解决机器视觉高速图像处理软件的加密需求?

高速图像处理在机器视觉中的应用重要性 在机器视觉行业中,高速图像处理软件的作用至关重要,它使得机器能够迅速分析和处理成千上万的图像数据。这种能力在制造业、安防系统、交通监控等多个领域发挥着核心作用,如在制造业中,高速…

ROS 2基础概念#2:节点(Node)| ROS 2学习笔记

ROS 2节点简介 节点是执行计算的进程。节点组合在一起形成一个图(graph),并使用主题(topic)、服务(service)和参数服务器(paramter server)相互通信。这些节点旨在以细粒…

防御安全(第六次作业)笔记整理

攻击可能只是一个点, 防御需要全方面进行 IAE引擎 DFI和DPI技术 --- 深度检测技术 DPI --- 深度包检测技术 --- 主要针对完整的数据包(数据包分片,分段需要重组) ,之后对 数据包的内容进行识别。(应用层&am…

Django学习笔记-查询及修改MySQL数据库表的所有信息

1.在index中添加一个按钮,用于查询数据 2.urls配置find 3.views定义find,获取PopulationModel模型所有数据渲染到show.html页面上 4.创建show.html,遍历modellist的数据渲染到表格中显示 5.点击查询后页面显示如下 6.添加修改按钮,点击按钮,执行update,urls配置update …