HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

IOS 监听APP退出

监听 iOS

let NSNotificationCenterClass = plus.ios.importClass("NSNotificationCenter");
let NSNotificationCenterObj = NSNotificationCenterClass.defaultCenter();
let num = 0 ;
plus.ios.invoke(NSNotificationCenterObj, "addObserverForName:object:queue:usingBlock:",
"UIApplicationWillTerminateNotification", null, null, function() {
// UIApplicationWillTerminateNotification 是应用即将终止的时候调用,但是我发现并没有调用 ,
// 得出最终结论 :
// 1.应用在前台,双击 Home 键 ,终止应用 , UIApplicationWillTerminateNotification 调用
// 2.应用在前台,单击 Home 键,进入桌面 , 再终止应用 UIApplicationWillTerminateNotification 不会被调用.
//应用在前台,双击Home键,杀掉调用 ,但是应用在后台,双击Home键, 再终止应用不会被通知
});
plus.ios.invoke(NSNotificationCenterObj, "addObserverForName:object:queue:usingBlock:",
"UIApplicationDidBecomeActiveNotification", null, null, function(){
num = 0;
console.log('启动');
});
plus.ios.invoke(NSNotificationCenterObj, "addObserverForName:object:queue:usingBlock:",
"UIApplicationDidEnterBackgroundNotification", null, null, function(){
num++
if(num ==2){
//杀死APP进程关闭直播
uni.$TrtcCloud.exitRoom();
}
console.log(num)
});
觉得用uni-app onHide生命周期也可以实现 ,因为无论是退出APP还是隐藏在后台onHide都会被执行,那么做个定时任务通知服务端APP退出了。
或者说做个debounce在连续的操作中,无论进行了多长时间,只有某一次的操作后在指定的时间内没有再操作,这一次才被判定有效 。

继续阅读 »

let NSNotificationCenterClass = plus.ios.importClass("NSNotificationCenter");
let NSNotificationCenterObj = NSNotificationCenterClass.defaultCenter();
let num = 0 ;
plus.ios.invoke(NSNotificationCenterObj, "addObserverForName:object:queue:usingBlock:",
"UIApplicationWillTerminateNotification", null, null, function() {
// UIApplicationWillTerminateNotification 是应用即将终止的时候调用,但是我发现并没有调用 ,
// 得出最终结论 :
// 1.应用在前台,双击 Home 键 ,终止应用 , UIApplicationWillTerminateNotification 调用
// 2.应用在前台,单击 Home 键,进入桌面 , 再终止应用 UIApplicationWillTerminateNotification 不会被调用.
//应用在前台,双击Home键,杀掉调用 ,但是应用在后台,双击Home键, 再终止应用不会被通知
});
plus.ios.invoke(NSNotificationCenterObj, "addObserverForName:object:queue:usingBlock:",
"UIApplicationDidBecomeActiveNotification", null, null, function(){
num = 0;
console.log('启动');
});
plus.ios.invoke(NSNotificationCenterObj, "addObserverForName:object:queue:usingBlock:",
"UIApplicationDidEnterBackgroundNotification", null, null, function(){
num++
if(num ==2){
//杀死APP进程关闭直播
uni.$TrtcCloud.exitRoom();
}
console.log(num)
});
觉得用uni-app onHide生命周期也可以实现 ,因为无论是退出APP还是隐藏在后台onHide都会被执行,那么做个定时任务通知服务端APP退出了。
或者说做个debounce在连续的操作中,无论进行了多长时间,只有某一次的操作后在指定的时间内没有再操作,这一次才被判定有效 。

收起阅读 »

全栈经验,有项目可以联系我

唐山市极信网络科技有限公司是一家专注于各行业小程序、APP、商城、平台电商/直播电商/跨境电商,erp、crm类管理系统、智慧园区、智慧校园、智慧社区、数字孪生、数字大屏 的科技公司。公司以“极致服务、诚信经营”为宗旨,致力于为客户提供最优质的解决方案。公司拥有一支年轻而又专业的团队,拥有丰富的行业经验。
有需要联系我!!!
V:15033452950

继续阅读 »

唐山市极信网络科技有限公司是一家专注于各行业小程序、APP、商城、平台电商/直播电商/跨境电商,erp、crm类管理系统、智慧园区、智慧校园、智慧社区、数字孪生、数字大屏 的科技公司。公司以“极致服务、诚信经营”为宗旨,致力于为客户提供最优质的解决方案。公司拥有一支年轻而又专业的团队,拥有丰富的行业经验。
有需要联系我!!!
V:15033452950

收起阅读 »

HBuilderX 越更新BUG越多,越来越卡!!

HBuilderX

HBuilderX 越更新BUG越多,越来越卡!!

HBuilderX 越更新BUG越多,越来越卡!!

兼职接单,多年uniapp开发经验

如题,有单的老板,请砸

如题,有单的老板,请砸

mui时间选择器在iOS16.4上出现偏移不正常的bug

mui picker

这里要清楚是样式导致的问题
可以看看如下链接怎么处理的:https://blog.csdn.net/feeeee889/article/details/131490861

或是以下步骤:
mui.picker.all.js中添加
if (isIos) {
//-----------------添加部分
if (mui.os.ios && mui.os.plus && plus.os.version >= "16.2") {
return;
}
var maches = userAgent.match(/iphone os ([\d_]+) /i);
if (maches && maches.length >= 2 && maches[1] >= "16_2"){
return;
}
//-----------------添加部分
self.list.style.webkitTransformOrigin = "center center " + self.r + "px";

}
mui.picker.css中注释
.mui-picker-inner {
/ 16.4及以上注释 /
/ -webkit-mask-box-image: -webkit-linear-gradient(bottom, transparent, transparent 5%, #fff 20%, #fff 80%, transparent 95%, transparent);
-webkit-mask-box-image: linear-gradient(top, transparent, transparent 5%, #fff 20%, #fff 80%, transparent 95%, transparent) /
}
亲测有效!!!

继续阅读 »

这里要清楚是样式导致的问题
可以看看如下链接怎么处理的:https://blog.csdn.net/feeeee889/article/details/131490861

或是以下步骤:
mui.picker.all.js中添加
if (isIos) {
//-----------------添加部分
if (mui.os.ios && mui.os.plus && plus.os.version >= "16.2") {
return;
}
var maches = userAgent.match(/iphone os ([\d_]+) /i);
if (maches && maches.length >= 2 && maches[1] >= "16_2"){
return;
}
//-----------------添加部分
self.list.style.webkitTransformOrigin = "center center " + self.r + "px";

}
mui.picker.css中注释
.mui-picker-inner {
/ 16.4及以上注释 /
/ -webkit-mask-box-image: -webkit-linear-gradient(bottom, transparent, transparent 5%, #fff 20%, #fff 80%, transparent 95%, transparent);
-webkit-mask-box-image: linear-gradient(top, transparent, transparent 5%, #fff 20%, #fff 80%, transparent 95%, transparent) /
}
亲测有效!!!

收起阅读 »

HBuilderX 内存占用过高导致系统崩溃

HBuilderX 进程已崩溃

HBuilderX 内存占用过高导致系统崩溃,2021 Mac book pro 14寸

HBuilderX 内存占用过高导致系统崩溃,2021 Mac book pro 14寸

支付宝支付一直报错:商家订单参数异常

支付宝支付

在接收到后台传递过来的订单信息后,在自己拼接后发现自己的格式上是没问题的,参数应该也是没问题的,但是一直报错说商家订单参数异常。
后来我在支付宝的社区里面看到官方提供的一个CSDN老哥免费分享的支付宝支付测试用apk,安装后发现,不是我这边的uni-app问题,后端老哥经过排查后发现,原来是sign在网页和APP需要不同方法生成。
最难顶的部分来了,不知道为什么,前端这边拼接的orderInfo就是不行,明明看起来格式也没毛病,然后后端也返回一个拼接的字符串,就是可以。
难道 js 和 Java的转义哪些不一样?

继续阅读 »

在接收到后台传递过来的订单信息后,在自己拼接后发现自己的格式上是没问题的,参数应该也是没问题的,但是一直报错说商家订单参数异常。
后来我在支付宝的社区里面看到官方提供的一个CSDN老哥免费分享的支付宝支付测试用apk,安装后发现,不是我这边的uni-app问题,后端老哥经过排查后发现,原来是sign在网页和APP需要不同方法生成。
最难顶的部分来了,不知道为什么,前端这边拼接的orderInfo就是不行,明明看起来格式也没毛病,然后后端也返回一个拼接的字符串,就是可以。
难道 js 和 Java的转义哪些不一样?

收起阅读 »

流量掘金9.9自动进群系统源码搭建指南

源码管理

流量掘金系统是一种商业模式,涉及到了大量的技术和策略,并且每个流量掘金系统都有自己独特的实现方式。那如何搭建一套属于自己的流量掘金9.9自动进群系统源码呢?下面我们将具体讲讲这个问题。

安装指引

演示:p.certerm.top/ms

如果您不熟悉/不满意您的pydn环境,请安装最新的流量掘金系统源码在一个新的,新鲜的环境中释放。

conda create -n traffic -c conda-forge python=3.10 traffic
调整您所需的比顿版本(&984t;=3.8),并附加您所需的高效工作包,如木星实验室、X数组、比托等。

当你需要使用流量掘金系统:

conda activate traffic

如果你发现这个项目对你的研究有用,并将其用于学术工作,你可以引用为:

@article{olive2019traffic,
author={Xavier {Olive}},
journal={Journal of Open Source Software},
title={traffic, a toolbox for processing and analysing air traffic data},
year={2019},
volume={4},
pages={1518},
doi={10.21105/joss.01518},
issn={2475-9066},
}

  测试和代码质量
  
  单元及非回归测试载于tests/ 目录。你可以运行pytest 从根目录。
  
  测试被检查行动在每个承诺上设置平台。最新的状态和覆盖显示在上面的标准徽章。 
  
[run]
branch = True
include = /traffic/
omit = tests, plugins, drawing, eurocontrol_, *opensky.py

[report]
exclude_lines =
coverage: ignore
raise NotImplementedError
if TYPE_CHECKING:
def geo_interface
def
repr
def
rich_repr

def __rich_console
def _reprhtml
def _reprsvg
def
str__
def _info_html
def _ipython_keycompletions
def leaflet
def map_leaflet
def plot

ignore_errors = True
  
部分源码展示:contacts.js

export default {
path: '/contacts',
name: 'contacts',
redirect: '/contacts/apply',
component: () => import('@/views/contacts/layout'),
children: [
{
path: '/contacts/apply',
meta: {
title: '我的联系人',
needLogin: true,
},
component: () => import('@/views/contacts/apply'),
},
{
path: '/contacts/friends',
meta: {
title: '我的好友',
needLogin: true,
},
component: () => import('@/views/contacts/friends'),
},
{
path: '/contacts/groups',
meta: {
title: '我的群组',
needLogin: true,
},
component: () => import('@/views/contacts/groups'),
},
],
}

   
如何创建流量掘金系统

  
  
  要建立一个流量掘金系统源码团队,你需要在社交媒体网站上创建一个通常的方式。但首先,要想出小组的名字,小众,以及你希望在你的小组中发生的事情。
  
  一旦你有了你的团体名称,你就可以去设置它。
  
  在你的主页上,点击你的名字和图片右侧上方的+标记。
  
  选择"一组。"
  
  添加标题,选择"隐私"作为小组的隐私。
  
  点击"创建团队"。"
  
  创建组后,您可以开始编辑页面左侧所示的章节中的细节。
  
  在创建团队时,您还可以邀请早期适配器、合作伙伴或您的队友。
  
  加录取问题
  
  在创建页面之后,您可以开始添加进入的步骤。这些是客户机或用户应该遵循的步骤,以获得对组的访问。
  
  创造问题,人们应该回答,如果他们想加入小组。
  
  建立团队规则。
  
  设立支付平台
  
  在满足了你对团队的需求之后,你现在可以建立你的支付平台了。
  
  如果你想建立一个订阅类型,那么你需要注册一个允许重复支付的平台。
  
  设立支付平台有四个选择,您可能希望尝试重复付款。
  
  您可以使用这个选项定制您的计划,包括经常您会向客户收取订阅费。检查如何为贝宝建立经常性付款。
  
  此选项支持任何计费模式,您可以很容易地将其集成到您的登陆页面。进一步了解条纹收费。
  
  由此渠道支付的款项将在一至两个营业日内转入你的银行帐户。了解与广场建立付款计划。
  
  这一方案提供了灵活性,可方便地将客户从一次性付款转向经常性付款。了解快速弹簧如何工作。
  
  一旦你决定并建立了你的支付平台,你现在可以创建它并将其集成到一个登陆页面。
  
  确保您的登陆页面容易理解,并有一个明确的行动呼吁订阅付费组。
  
  为流量掘金系统源码团队创建内容
  
  创建流量掘金9.9自动进群系统源码团队,并不仅仅限于邀请人们加入。如果你能提供有价值的内容,人们会订阅你的团队。
  
  在认真推销你的付费流量掘金9.9自动进群系统团队之前,计划好你的内容是很重要的。你应该能够向你的订户提供他们需要的信息,一旦他们加入了这个团体。
  

  以下是一些你可以提供给加入者的内容:
  
现场流--去团队中与你的追随者或订阅者一起享受一个更专业的时间。您的广播应该是一个更专业的版本的公众现场节目在您的页面。
  
  独家视频-你也可以预先录制一个课程的视频,并在流量掘金9.9自动进群系统源码团队中按计划发布。它的离线记录功能可以让你制作视频 下载它们以便重新使用。
  
  在流量掘金系统源码团队中分享独家文件和文档给你的客户。与现场销售链接功能 ,你可以发送一个链接到你想分享的文件在你的广播。
  
  流量掘金系统页面与团体
  
  那么你什么时候应该创建一个流量掘金系统页面或者一个团队呢?
  
  流量掘金系统页面是你的公开信息。这就像你的数字电话卡,人们可以很容易地在网上找到你。在这里,你可以获得新客户,并为冷漠的观众热身。当然,你可以在这里分享那些不熟悉你生意的人的内容。

继续阅读 »

流量掘金系统是一种商业模式,涉及到了大量的技术和策略,并且每个流量掘金系统都有自己独特的实现方式。那如何搭建一套属于自己的流量掘金9.9自动进群系统源码呢?下面我们将具体讲讲这个问题。

安装指引

演示:p.certerm.top/ms

如果您不熟悉/不满意您的pydn环境,请安装最新的流量掘金系统源码在一个新的,新鲜的环境中释放。

conda create -n traffic -c conda-forge python=3.10 traffic
调整您所需的比顿版本(&984t;=3.8),并附加您所需的高效工作包,如木星实验室、X数组、比托等。

当你需要使用流量掘金系统:

conda activate traffic

如果你发现这个项目对你的研究有用,并将其用于学术工作,你可以引用为:

@article{olive2019traffic,
author={Xavier {Olive}},
journal={Journal of Open Source Software},
title={traffic, a toolbox for processing and analysing air traffic data},
year={2019},
volume={4},
pages={1518},
doi={10.21105/joss.01518},
issn={2475-9066},
}

  测试和代码质量
  
  单元及非回归测试载于tests/ 目录。你可以运行pytest 从根目录。
  
  测试被检查行动在每个承诺上设置平台。最新的状态和覆盖显示在上面的标准徽章。 
  
[run]
branch = True
include = /traffic/
omit = tests, plugins, drawing, eurocontrol_, *opensky.py

[report]
exclude_lines =
coverage: ignore
raise NotImplementedError
if TYPE_CHECKING:
def geo_interface
def
repr
def
rich_repr

def __rich_console
def _reprhtml
def _reprsvg
def
str__
def _info_html
def _ipython_keycompletions
def leaflet
def map_leaflet
def plot

ignore_errors = True
  
部分源码展示:contacts.js

export default {
path: '/contacts',
name: 'contacts',
redirect: '/contacts/apply',
component: () => import('@/views/contacts/layout'),
children: [
{
path: '/contacts/apply',
meta: {
title: '我的联系人',
needLogin: true,
},
component: () => import('@/views/contacts/apply'),
},
{
path: '/contacts/friends',
meta: {
title: '我的好友',
needLogin: true,
},
component: () => import('@/views/contacts/friends'),
},
{
path: '/contacts/groups',
meta: {
title: '我的群组',
needLogin: true,
},
component: () => import('@/views/contacts/groups'),
},
],
}

   
如何创建流量掘金系统

  
  
  要建立一个流量掘金系统源码团队,你需要在社交媒体网站上创建一个通常的方式。但首先,要想出小组的名字,小众,以及你希望在你的小组中发生的事情。
  
  一旦你有了你的团体名称,你就可以去设置它。
  
  在你的主页上,点击你的名字和图片右侧上方的+标记。
  
  选择"一组。"
  
  添加标题,选择"隐私"作为小组的隐私。
  
  点击"创建团队"。"
  
  创建组后,您可以开始编辑页面左侧所示的章节中的细节。
  
  在创建团队时,您还可以邀请早期适配器、合作伙伴或您的队友。
  
  加录取问题
  
  在创建页面之后,您可以开始添加进入的步骤。这些是客户机或用户应该遵循的步骤,以获得对组的访问。
  
  创造问题,人们应该回答,如果他们想加入小组。
  
  建立团队规则。
  
  设立支付平台
  
  在满足了你对团队的需求之后,你现在可以建立你的支付平台了。
  
  如果你想建立一个订阅类型,那么你需要注册一个允许重复支付的平台。
  
  设立支付平台有四个选择,您可能希望尝试重复付款。
  
  您可以使用这个选项定制您的计划,包括经常您会向客户收取订阅费。检查如何为贝宝建立经常性付款。
  
  此选项支持任何计费模式,您可以很容易地将其集成到您的登陆页面。进一步了解条纹收费。
  
  由此渠道支付的款项将在一至两个营业日内转入你的银行帐户。了解与广场建立付款计划。
  
  这一方案提供了灵活性,可方便地将客户从一次性付款转向经常性付款。了解快速弹簧如何工作。
  
  一旦你决定并建立了你的支付平台,你现在可以创建它并将其集成到一个登陆页面。
  
  确保您的登陆页面容易理解,并有一个明确的行动呼吁订阅付费组。
  
  为流量掘金系统源码团队创建内容
  
  创建流量掘金9.9自动进群系统源码团队,并不仅仅限于邀请人们加入。如果你能提供有价值的内容,人们会订阅你的团队。
  
  在认真推销你的付费流量掘金9.9自动进群系统团队之前,计划好你的内容是很重要的。你应该能够向你的订户提供他们需要的信息,一旦他们加入了这个团体。
  

  以下是一些你可以提供给加入者的内容:
  
现场流--去团队中与你的追随者或订阅者一起享受一个更专业的时间。您的广播应该是一个更专业的版本的公众现场节目在您的页面。
  
  独家视频-你也可以预先录制一个课程的视频,并在流量掘金9.9自动进群系统源码团队中按计划发布。它的离线记录功能可以让你制作视频 下载它们以便重新使用。
  
  在流量掘金系统源码团队中分享独家文件和文档给你的客户。与现场销售链接功能 ,你可以发送一个链接到你想分享的文件在你的广播。
  
  流量掘金系统页面与团体
  
  那么你什么时候应该创建一个流量掘金系统页面或者一个团队呢?
  
  流量掘金系统页面是你的公开信息。这就像你的数字电话卡,人们可以很容易地在网上找到你。在这里,你可以获得新客户,并为冷漠的观众热身。当然,你可以在这里分享那些不熟悉你生意的人的内容。

收起阅读 »

uniapp运行到基座

雷电模拟器

操作
运行-运行到手机或模拟器-雷电模拟器(其他模拟器也可)

操作
运行-运行到手机或模拟器-雷电模拟器(其他模拟器也可)

uvUI之破釜沉舟,基于uniapp和uview2.x多端兼容,利剑出击

插件讨论 uniapp插件

image

相关链接

  1. 插件市场:https://ext.dcloud.net.cn/plugin?id=12287 【不要下载插件ZIP】
  2. 开发文档:https://www.uvui.cn/components/intro.html
  3. 演示效果:https://h5.uvui.cn 【vue3版本】
  4. gitee地址:https://gitee.com/my_dear_li_pan/uv-ui.git 【暂时未上npm版本,需要的可以去gitee上拉取导入到自己项目】

    简介

  5. uv-ui组件继承uview2.x,并增加了瀑布流、颜色选择器、垂直选项卡、二维码生成器等组件,都得到了不错的反馈。经过2个多月的不断优化和修改BUG,目前已经很稳定,我自己的项目也在用这套。
  6. uv-ui支持独立导入,开发者可以选择需要的组件一键导入即可,且无需引入任何配置,导入运行就可以正常使用。当然开发者也可以进行扩展配置,全局使用内置的一些方法,也可以按需使用工具,具体可以查看文档扩展配置
  7. uv-ui是兼容全端,主要包括:vue3、vue2、app-nvue、h5、微信小程序、百度小程序、抖音小程序、支付宝小程序等,这些平台都是经过我们无数次测试,只有几个组件由于平台差异性在某些平台不能正常使用,不兼容的在问题汇总里面也有详细说明。

重大改变

  1. 动画组件(uv-transition)、弹窗组件(uv-popup)重构,性能大大提升,避免在小程序端打开和关闭延迟,组件的打开方式改成了ref调用open(),无需主动进行关闭。由于重构的两个基础组件,影响多个其他组件,所以弹窗相关的组件打开方式都有所变化,详情查看更新日志1.0.11。总之,这样做的好处不仅是统一写法,更重要是性能大大提升。
  2. uv-ui无需引入配置,导入即可在页面中进行使用,在组件内部已经处理好(导入后最好是重新运行下项目)。
  3. 全面兼容vue3,修改大量BUG,所有独立出来props文件全部取消,之前会造成冗余,造成大量js同时加载。很多组件本就是一起使用的,uv-ui将它们合并到一起。
  4. 由于之前对部分小程序兼容不好,在经过更改之后,兼容到百度小程序、抖音小程序、支付宝小程序。兼容性更好。
  5. 新增瀑布流、颜色选择器、垂直选项卡、二维码生成器等组件。
  6. 目前已经更新迭代了多个版本,更多请查看更新日志

加入我们

  1. 诚挚的邀请uniapp开发者使用uv-ui组件库,在使用中共同进步。
  2. 如果有任何关于uv-ui的问题,可以加入QQ群聊549833913,我们追求的就是解决问题的速度。
  3. 我们追求开源,无需付费。看广告只是为了抵消一部分成本,如果有用户看不了广告需要付费,联系我们,我们可以进行一部分补贴,仅限于最低消费0.3。

效果图

当前版本:

image

继续阅读 »

image

相关链接

  1. 插件市场:https://ext.dcloud.net.cn/plugin?id=12287 【不要下载插件ZIP】
  2. 开发文档:https://www.uvui.cn/components/intro.html
  3. 演示效果:https://h5.uvui.cn 【vue3版本】
  4. gitee地址:https://gitee.com/my_dear_li_pan/uv-ui.git 【暂时未上npm版本,需要的可以去gitee上拉取导入到自己项目】

    简介

  5. uv-ui组件继承uview2.x,并增加了瀑布流、颜色选择器、垂直选项卡、二维码生成器等组件,都得到了不错的反馈。经过2个多月的不断优化和修改BUG,目前已经很稳定,我自己的项目也在用这套。
  6. uv-ui支持独立导入,开发者可以选择需要的组件一键导入即可,且无需引入任何配置,导入运行就可以正常使用。当然开发者也可以进行扩展配置,全局使用内置的一些方法,也可以按需使用工具,具体可以查看文档扩展配置
  7. uv-ui是兼容全端,主要包括:vue3、vue2、app-nvue、h5、微信小程序、百度小程序、抖音小程序、支付宝小程序等,这些平台都是经过我们无数次测试,只有几个组件由于平台差异性在某些平台不能正常使用,不兼容的在问题汇总里面也有详细说明。

重大改变

  1. 动画组件(uv-transition)、弹窗组件(uv-popup)重构,性能大大提升,避免在小程序端打开和关闭延迟,组件的打开方式改成了ref调用open(),无需主动进行关闭。由于重构的两个基础组件,影响多个其他组件,所以弹窗相关的组件打开方式都有所变化,详情查看更新日志1.0.11。总之,这样做的好处不仅是统一写法,更重要是性能大大提升。
  2. uv-ui无需引入配置,导入即可在页面中进行使用,在组件内部已经处理好(导入后最好是重新运行下项目)。
  3. 全面兼容vue3,修改大量BUG,所有独立出来props文件全部取消,之前会造成冗余,造成大量js同时加载。很多组件本就是一起使用的,uv-ui将它们合并到一起。
  4. 由于之前对部分小程序兼容不好,在经过更改之后,兼容到百度小程序、抖音小程序、支付宝小程序。兼容性更好。
  5. 新增瀑布流、颜色选择器、垂直选项卡、二维码生成器等组件。
  6. 目前已经更新迭代了多个版本,更多请查看更新日志

加入我们

  1. 诚挚的邀请uniapp开发者使用uv-ui组件库,在使用中共同进步。
  2. 如果有任何关于uv-ui的问题,可以加入QQ群聊549833913,我们追求的就是解决问题的速度。
  3. 我们追求开源,无需付费。看广告只是为了抵消一部分成本,如果有用户看不了广告需要付费,联系我们,我们可以进行一部分补贴,仅限于最低消费0.3。

效果图

当前版本:

image

收起阅读 »

安卓11及以上版本申请所有文件访问权限

Native.JS

安卓11以后,文件读写权限申请变得更严格,常见的就是读取sdcard内的公共文件都提示没有权限,以下方法用于申请所有文件访问读写权限(并非所有空间都能读写,具体查看相关文档),添加MANAGE_EXTERNAL_STORAGE权限可能导致google play审核不通过,目前一般只允许文件管理器之类主要功能依赖文件读写的应用上架。

/**  
     * 安卓11及以上版本(SDK>=30),需要申请MANAGE_EXTERNAL_STORAGE权限,否则按钮无法点击,如下  
     * 在manifest.json>app-plus>distribute>android>permissions中添加权限  
     * <uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>  
     */  
    requestPermission() {  
      const main = plus.android.runtimeMainActivity();  
      const pkName = main.getPackageName();  
      const Intent = plus.android.importClass("android.content.Intent");  
      const Build = plus.android.importClass("android.os.Build");  
      const Settings = plus.android.importClass("android.provider.Settings");  
      const Environment = plus.android.importClass("android.os.Environment");  
      if (Build.VERSION.SDK_INT >= 30) {  
        // 权限未获取跳转到设置页  
        if (!Environment.isExternalStorageManager()) {  
          let intent = new Intent(  
            Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION  
          );  
          const Uri = plus.android.importClass("android.net.Uri");  
          const uri = Uri.fromParts("package", pkName, null);  
          intent.setData(uri);  
          main.startActivity(intent);  
        }  
        // 权限已获取,自定义处理  
        else {  
        }  
      }  
    }
继续阅读 »

安卓11以后,文件读写权限申请变得更严格,常见的就是读取sdcard内的公共文件都提示没有权限,以下方法用于申请所有文件访问读写权限(并非所有空间都能读写,具体查看相关文档),添加MANAGE_EXTERNAL_STORAGE权限可能导致google play审核不通过,目前一般只允许文件管理器之类主要功能依赖文件读写的应用上架。

/**  
     * 安卓11及以上版本(SDK>=30),需要申请MANAGE_EXTERNAL_STORAGE权限,否则按钮无法点击,如下  
     * 在manifest.json>app-plus>distribute>android>permissions中添加权限  
     * <uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>  
     */  
    requestPermission() {  
      const main = plus.android.runtimeMainActivity();  
      const pkName = main.getPackageName();  
      const Intent = plus.android.importClass("android.content.Intent");  
      const Build = plus.android.importClass("android.os.Build");  
      const Settings = plus.android.importClass("android.provider.Settings");  
      const Environment = plus.android.importClass("android.os.Environment");  
      if (Build.VERSION.SDK_INT >= 30) {  
        // 权限未获取跳转到设置页  
        if (!Environment.isExternalStorageManager()) {  
          let intent = new Intent(  
            Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION  
          );  
          const Uri = plus.android.importClass("android.net.Uri");  
          const uri = Uri.fromParts("package", pkName, null);  
          intent.setData(uri);  
          main.startActivity(intent);  
        }  
        // 权限已获取,自定义处理  
        else {  
        }  
      }  
    }
收起阅读 »

uni-simple-router-v3 示例工程介绍

路由拦截 权限路由 动态路由 路由守卫 路由 uni_app

uni-simple-router-v3 示例工程介绍

您可以在 GitHub 上找到 uni-simple-router v3示例源代码。要运行示例功能非常简单,但在此之前,您必须已经获得授权并下载了 uni-simple-router v3 版本。如果您尚未获得授权或未下载,请点击此处获取授权和下载

如果你正在使用 vue3 + vite 请参考 uni-simple-router v3 路由、拦截、最优雅的解决方案重磅来袭,或者查看 官方文档

安装 uni-simple-router

请将已经下载下来后的插件包解压,并放入项目根目录下的 uni-simple-router 文件夹中。如果没有 uni-simple-router 文件夹,你必须自己新建一个 uni-simple-router 文件夹,并将插件包放入里面,即可完成安装。

目录结构

C:\Users\Administrator\Desktop\v3-example  
├─colorui  
├─components  
├─examples  
├─node_modules  
├─pagesA  
├─pages-A-child  
├─pagesB  
├─pages-B-child  
├─pagesMain  
├─router  
├─static  
├─tabbar  
├─uni-simple-router  
|         ├─appletRouterView.vue  
|         ├─compiler.d.ts  
|         ├─compiler.js  
|         ├─compiler.js.LICENSE.txt  
|         ├─index.d.ts  
|         ├─index.mjs  
|         ├─index.mjs.LICENSE.txt  
|         ├─version.json  
├─utils  
├─vk-uview-ui_1.4.5  
├─App.vue  
├─index.html  
├─main.js  
├─manifest.json  
├─newMain.js  
├─package.json  
├─pages.json  
├─pnpm-lock.yaml  
├─uni.scss  
├─vite.config.js

安装依赖

在项目根目录下执行,安装示例项目所需依赖。

npm install

H5 父级窗体转场动画

H5 父级窗体随机转场动画

H5 子路由转场动画

App 拦截所有返回

App 使用无限嵌套路由

App 使用子路由

小程序 首屏拦截

小程序 使用动态嵌套路由

小程序 使用权限路由

小程序 使用子路由

重定向及404

无限嵌套权限路由

上帝函数组件通讯

全局路由守卫

嵌套权限路由

继续阅读 »

uni-simple-router-v3 示例工程介绍

您可以在 GitHub 上找到 uni-simple-router v3示例源代码。要运行示例功能非常简单,但在此之前,您必须已经获得授权并下载了 uni-simple-router v3 版本。如果您尚未获得授权或未下载,请点击此处获取授权和下载

如果你正在使用 vue3 + vite 请参考 uni-simple-router v3 路由、拦截、最优雅的解决方案重磅来袭,或者查看 官方文档

安装 uni-simple-router

请将已经下载下来后的插件包解压,并放入项目根目录下的 uni-simple-router 文件夹中。如果没有 uni-simple-router 文件夹,你必须自己新建一个 uni-simple-router 文件夹,并将插件包放入里面,即可完成安装。

目录结构

C:\Users\Administrator\Desktop\v3-example  
├─colorui  
├─components  
├─examples  
├─node_modules  
├─pagesA  
├─pages-A-child  
├─pagesB  
├─pages-B-child  
├─pagesMain  
├─router  
├─static  
├─tabbar  
├─uni-simple-router  
|         ├─appletRouterView.vue  
|         ├─compiler.d.ts  
|         ├─compiler.js  
|         ├─compiler.js.LICENSE.txt  
|         ├─index.d.ts  
|         ├─index.mjs  
|         ├─index.mjs.LICENSE.txt  
|         ├─version.json  
├─utils  
├─vk-uview-ui_1.4.5  
├─App.vue  
├─index.html  
├─main.js  
├─manifest.json  
├─newMain.js  
├─package.json  
├─pages.json  
├─pnpm-lock.yaml  
├─uni.scss  
├─vite.config.js

安装依赖

在项目根目录下执行,安装示例项目所需依赖。

npm install

H5 父级窗体转场动画

H5 父级窗体随机转场动画

H5 子路由转场动画

App 拦截所有返回

App 使用无限嵌套路由

App 使用子路由

小程序 首屏拦截

小程序 使用动态嵌套路由

小程序 使用权限路由

小程序 使用子路由

重定向及404

无限嵌套权限路由

上帝函数组件通讯

全局路由守卫

嵌套权限路由

收起阅读 »