HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

IOS 高版本跳转不到设置,应该怎么弄?

使用plus.runtime.openURL("app-settings:")

使用plus.runtime.openURL("app-settings:")

付费定制一个视频播放器插件

插件需求

要支持安卓、ios、网页,支持直播模式和回放模式,直播模式下可以支持切换线路,直播模式没有进度条,样式有些变化,回放模式下支持倍速播放,能做的联系我,付费

要支持安卓、ios、网页,支持直播模式和回放模式,直播模式下可以支持切换线路,直播模式没有进度条,样式有些变化,回放模式下支持倍速播放,能做的联系我,付费

【免费解答一切uniapp问题】

Debug

互相促进吧,我解决你的问题,正好补全我的知识点的死角。

互相促进吧,我解决你的问题,正好补全我的知识点的死角。

使用nativejs监听USB设备插拔

Native.JS

1.配置权限

<uses-feature android:name="android.hardware.usb.host"/>  
<uses-permission android:name="android.permission.USB_PERMISSION"/>

2.注册广播

const main = plus.android.runtimeMainActivity()  
const IntentFilter = plus.android.importClass('android.content.IntentFilter')  

/ 创建广播过滤器  
const filter = new IntentFilter()  
// filter.addAction(action)  
filter.addAction('android.hardware.usb.action.USB_DEVICE_ATTACHED')  
filter.addAction('android.hardware.usb.action.USB_DEVICE_DETACHED')  

const receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {  
    onReceive: function(context, intent) {  
        // console.log("USB广播触发了!!!")  
        // console.log("完整intent:", intent.toString())  
        const actionType = intent.toString().match(/act=([^\s]+)/)[1]  
        console.log(actionType)  
        if (actionType === 'android.hardware.usb.action.USB_DEVICE_ATTACHED') {  

        } else if (actionType === 'android.hardware.usb.action.USB_DEVICE_DETACHED') {  

        }  

    }  
})  

// 注册广播  
main.registerReceiver(receiver, filter)
继续阅读 »

1.配置权限

<uses-feature android:name="android.hardware.usb.host"/>  
<uses-permission android:name="android.permission.USB_PERMISSION"/>

2.注册广播

const main = plus.android.runtimeMainActivity()  
const IntentFilter = plus.android.importClass('android.content.IntentFilter')  

/ 创建广播过滤器  
const filter = new IntentFilter()  
// filter.addAction(action)  
filter.addAction('android.hardware.usb.action.USB_DEVICE_ATTACHED')  
filter.addAction('android.hardware.usb.action.USB_DEVICE_DETACHED')  

const receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {  
    onReceive: function(context, intent) {  
        // console.log("USB广播触发了!!!")  
        // console.log("完整intent:", intent.toString())  
        const actionType = intent.toString().match(/act=([^\s]+)/)[1]  
        console.log(actionType)  
        if (actionType === 'android.hardware.usb.action.USB_DEVICE_ATTACHED') {  

        } else if (actionType === 'android.hardware.usb.action.USB_DEVICE_DETACHED') {  

        }  

    }  
})  

// 注册广播  
main.registerReceiver(receiver, filter)
收起阅读 »

关于微信小程序自定义TabBar在uniapp中的使用

微信小程序 uniapp

在根项目(和main.js、pages.json等文件同级的地方)中创建微信小程序原生的 custom-tab-bar 文件,
可以微信小程序参考官方
https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html
这里要注意的是
this.getTabBar().setData({
selected: 0
})
这种写法是在微信小程序原生中用的(微信小程序原生的.js中使用),
在uniapp中,应该如下使用,否者每次跳转tab页,都是第一个被选中
// 更新自定义 TabBar 选中状态(.vue中使用)
if (typeof this.$mp.page.getTabBar === 'function') {
const tabBar = this.$mp.page.getTabBar();
if (tabBar) {
tabBar.setData({
selected: 0
});
}
}

继续阅读 »

在根项目(和main.js、pages.json等文件同级的地方)中创建微信小程序原生的 custom-tab-bar 文件,
可以微信小程序参考官方
https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html
这里要注意的是
this.getTabBar().setData({
selected: 0
})
这种写法是在微信小程序原生中用的(微信小程序原生的.js中使用),
在uniapp中,应该如下使用,否者每次跳转tab页,都是第一个被选中
// 更新自定义 TabBar 选中状态(.vue中使用)
if (typeof this.$mp.page.getTabBar === 'function') {
const tabBar = this.$mp.page.getTabBar();
if (tabBar) {
tabBar.setData({
selected: 0
});
}
}

收起阅读 »

跨境电商结算金额出现 0.0000000003?教你一招完美解决!

在做第一代跨境电商项目时,发现 270.6 + 49.99 居然不等于 320.59?这种浮点数精度 Bug 在结算时简直是灾难。
计算机无法精确表示某些十进制小数,导致累加后出现微小偏差。
轻量、无依赖、适配 Vue 3 和 Uni-app 移动端。

“为了方便大家快速复用,我已经把这套经过实战检验的逻辑封装成了 uni_modules 插件。

插件地址:https://ext.dcloud.net.cn/plugin?id=27469

欢迎大家下载支持,后续会持续更新更多跨境电商实战组件。”

继续阅读 »

在做第一代跨境电商项目时,发现 270.6 + 49.99 居然不等于 320.59?这种浮点数精度 Bug 在结算时简直是灾难。
计算机无法精确表示某些十进制小数,导致累加后出现微小偏差。
轻量、无依赖、适配 Vue 3 和 Uni-app 移动端。

“为了方便大家快速复用,我已经把这套经过实战检验的逻辑封装成了 uni_modules 插件。

插件地址:https://ext.dcloud.net.cn/plugin?id=27469

欢迎大家下载支持,后续会持续更新更多跨境电商实战组件。”

收起阅读 »

【关于】uniCloud阿里云服务空间云函数计费规则调整,节约资源费用经验分享。

unicloud入门教程 uniCloud

我也是等到费用不够提醒的时候,才注意到的。那个时候已经过去很多天了。附图

我小程序日活300左右吧,所以正常也没怎么去管理,让它自己跑。
我分了很多云对象。各司其职。新规出来后,我把定时任务在同一时间段的合并成一个。
全部云对象合并成一个。新的云对象有4000行代码。

在这里应该有人担心合并成一个后的性能问题。有区别,但是类似我这样的 区别应该不大。
启动阶段分为 冷启动 跟 热启动。(官方文档:阿里云:15分钟内没有第二次访问的云函数,就会被回收)
代码大了冷启动需要耗时比较久。
都是热启动状态下区别很小,忽略不计。

总结,冷启动比较久一点。热启动状态下无区别。
(PS:在改规前,我还想写定时任务,让函数一直处于热启动,这样前端请求返回就会跳过函数冷启动的阶段更快。)

所以这里的建议是合并成一个云对象,这一步适用很多中小项目。
因为我使用的是uni-id 所以我理论上最低消耗应该是 0.24x2+定时任务 也就是五毛到六毛。比之前高了10倍,但是可以接受。
使用于不是迁移到支付云的大家。

有不懂了,留言。我看见会帮忙。

继续阅读 »

我也是等到费用不够提醒的时候,才注意到的。那个时候已经过去很多天了。附图

我小程序日活300左右吧,所以正常也没怎么去管理,让它自己跑。
我分了很多云对象。各司其职。新规出来后,我把定时任务在同一时间段的合并成一个。
全部云对象合并成一个。新的云对象有4000行代码。

在这里应该有人担心合并成一个后的性能问题。有区别,但是类似我这样的 区别应该不大。
启动阶段分为 冷启动 跟 热启动。(官方文档:阿里云:15分钟内没有第二次访问的云函数,就会被回收)
代码大了冷启动需要耗时比较久。
都是热启动状态下区别很小,忽略不计。

总结,冷启动比较久一点。热启动状态下无区别。
(PS:在改规前,我还想写定时任务,让函数一直处于热启动,这样前端请求返回就会跳过函数冷启动的阶段更快。)

所以这里的建议是合并成一个云对象,这一步适用很多中小项目。
因为我使用的是uni-id 所以我理论上最低消耗应该是 0.24x2+定时任务 也就是五毛到六毛。比之前高了10倍,但是可以接受。
使用于不是迁移到支付云的大家。

有不懂了,留言。我看见会帮忙。

收起阅读 »

Google Play 正式发版后,Appkey未配置问题【离线打包】

离线打包 GooglePlay appkey

我遇到的情况和过程:
1、走的是离线打包;
2、内测正常;
3、正式版发布后,安装提示appkey未配置或不正确;
4、社区我搜索出来似乎都没有明确说明这个如何解决;
5、目前已经正式发新版上架,下载测试成功已经解决。

造成的原因
我分析的之间原因是:
按uni-app官方的流程走appkey申请的各位包括我之前,很有可能填写的sha1和sha256是个签keystore的,Google Play二签发版后,下载下来自然就不匹配。
表象:内测发版正常(因为google发内测没有执行二签)

正确的处理
就是把Google Play提供的应用凭证去uni-app重新申请appkey,并更新重新发版:


注意
我測試的结果:
1、用Google Play的凭证申请的Appkey只有正式发布(公测我未试)是正常的,其他都会提示未配置;
2、用自签的凭证申请的Appkey在本地、apk和发内测都是正常的,正式发布会提示未配置;
3、无论用哪个Appkey,离线打包的证书都未变,都是用自签的证书。

——MD5我沒測到底要不要,我看提供了就順便,確實也沒發現問題;

——我確實就是這樣解決的,如果還是不行,我就確實不知道了:)

继续阅读 »

我遇到的情况和过程:
1、走的是离线打包;
2、内测正常;
3、正式版发布后,安装提示appkey未配置或不正确;
4、社区我搜索出来似乎都没有明确说明这个如何解决;
5、目前已经正式发新版上架,下载测试成功已经解决。

造成的原因
我分析的之间原因是:
按uni-app官方的流程走appkey申请的各位包括我之前,很有可能填写的sha1和sha256是个签keystore的,Google Play二签发版后,下载下来自然就不匹配。
表象:内测发版正常(因为google发内测没有执行二签)

正确的处理
就是把Google Play提供的应用凭证去uni-app重新申请appkey,并更新重新发版:


注意
我測試的结果:
1、用Google Play的凭证申请的Appkey只有正式发布(公测我未试)是正常的,其他都会提示未配置;
2、用自签的凭证申请的Appkey在本地、apk和发内测都是正常的,正式发布会提示未配置;
3、无论用哪个Appkey,离线打包的证书都未变,都是用自签的证书。

——MD5我沒測到底要不要,我看提供了就順便,確實也沒發現問題;

——我確實就是這樣解決的,如果還是不行,我就確實不知道了:)

收起阅读 »

基于vue3.5+electron41+vite8.0++deepseek构建桌面版ai智能对答系统

vue3 OpenAI ai vite

vite8-electron41-deepseek:基于vue3.5+vite8.0+electron41+arco+markdown+hljs+openai集成调用deepseek api聊天大模型。支持暗夜+浅色主题、深度思考、代码高亮/复制代码/下载、katex公式、渲染mermaid图表等功能。

技术知识

  • 编辑器:Vscode
  • 跨平台框架:electron^41.0.3
  • 前端框架:vite^8.0.1+vue^3.5.30+vue-router^5.0.4
  • 大模型框架:deepseek-v3.2+openai
  • 组件库:arco-design^2.57.0
  • 状态管理:pinia^3.0.4
  • markdown解析:markdown-it^14.1.1
  • 打包工具:electron-builder^26.8.1
  • vite桥接electron插件:vite-plugin-electron^0.29.1

项目框架目录结构

使用vite8.0+electron41构建项目,vue3 setup语法编码开发。

最新研发vue3.5+vite8+electron41搭建本地桌面版ai流式生成智能助手。
Electron41+Vite8+DeepSeek桌面版AI流式会话模板Exe

了解更多的项目详细介绍,可以看看下面这篇文章。
Electron41+Vite8.0+DeepSeek桌面端AI助手|electron+vue3流式ai系统

热文推荐

uniapp+deepseek流式ai助理|uniapp+vue3对接deepseek三端Ai问答模板
Vite8+DeepSeek网页版AI助手|vue3+arco本地web版ai流式打字问答系统
tauri2.10+deepseek+vite7客户端ai系统|Tauri2+Vue3.5桌面AI程序Exe
vite8.0+deepseek流式ai模板|vue3.5+vant4+markdown打字输出ai助手
Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统
electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
Electron38-Vue3OS客户端OS系统|vite7+electron38+arco桌面os后台管理
最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】
最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】
Tauri2.9+Vue3桌面版OS系统|vite7+tauri2+arcoDesign电脑端os后台模板
Tauri2.8+Vue3聊天系统|vite7+tauri2+element-plus客户端仿微信聊天程序
Tauri2-Vite7Admin客户端管理后台|tauri2.9+vue3+element-plus后台系统
最新版Flutter3.38+Dart3.10仿写抖音APP直播+短视频+聊天应用程序
Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板
最新研发flutter3.27+bitsdojo_window+getx客户端仿微信聊天Exe应用
最新版Flutter3.32+Dart3.8跨平台仿微信app聊天界面|朋友圈

继续阅读 »

vite8-electron41-deepseek:基于vue3.5+vite8.0+electron41+arco+markdown+hljs+openai集成调用deepseek api聊天大模型。支持暗夜+浅色主题、深度思考、代码高亮/复制代码/下载、katex公式、渲染mermaid图表等功能。

技术知识

  • 编辑器:Vscode
  • 跨平台框架:electron^41.0.3
  • 前端框架:vite^8.0.1+vue^3.5.30+vue-router^5.0.4
  • 大模型框架:deepseek-v3.2+openai
  • 组件库:arco-design^2.57.0
  • 状态管理:pinia^3.0.4
  • markdown解析:markdown-it^14.1.1
  • 打包工具:electron-builder^26.8.1
  • vite桥接electron插件:vite-plugin-electron^0.29.1

项目框架目录结构

使用vite8.0+electron41构建项目,vue3 setup语法编码开发。

最新研发vue3.5+vite8+electron41搭建本地桌面版ai流式生成智能助手。
Electron41+Vite8+DeepSeek桌面版AI流式会话模板Exe

了解更多的项目详细介绍,可以看看下面这篇文章。
Electron41+Vite8.0+DeepSeek桌面端AI助手|electron+vue3流式ai系统

热文推荐

uniapp+deepseek流式ai助理|uniapp+vue3对接deepseek三端Ai问答模板
Vite8+DeepSeek网页版AI助手|vue3+arco本地web版ai流式打字问答系统
tauri2.10+deepseek+vite7客户端ai系统|Tauri2+Vue3.5桌面AI程序Exe
vite8.0+deepseek流式ai模板|vue3.5+vant4+markdown打字输出ai助手
Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统
electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
Electron38-Vue3OS客户端OS系统|vite7+electron38+arco桌面os后台管理
最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】
最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】
Tauri2.9+Vue3桌面版OS系统|vite7+tauri2+arcoDesign电脑端os后台模板
Tauri2.8+Vue3聊天系统|vite7+tauri2+element-plus客户端仿微信聊天程序
Tauri2-Vite7Admin客户端管理后台|tauri2.9+vue3+element-plus后台系统
最新版Flutter3.38+Dart3.10仿写抖音APP直播+短视频+聊天应用程序
Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板
最新研发flutter3.27+bitsdojo_window+getx客户端仿微信聊天Exe应用
最新版Flutter3.32+Dart3.8跨平台仿微信app聊天界面|朋友圈

收起阅读 »

监听应用安装完成

/**

  • 监听应用启动
  • 通过广播接收器监听目标应用的启动事件
    */
    const receiveBroadcastOfAppInstall: {
    broadcastReceiver?: any;
    (targetPname: string): Promise<void>
    } = (targetPname) => {
    const main = plus.android.runtimeMainActivity()
    if (receiveBroadcastOfAppInstall.broadcastReceiver) {
    // @ts-ignore
    main.unregisterReceiver(receiveBroadcastOfAppInstall.broadcastReceiver)
    receiveBroadcastOfAppInstall.broadcastReceiver = null
    }

    const Intent = plus.android.importClass('android.content.Intent')
    const IntentFilter = plus.android.importClass('android.content.IntentFilter')
    const Uri = plus.android.importClass('android.net.Uri')
    // @ts-ignore
    const filter = new IntentFilter()
    // @ts-ignore
    filter.addAction(Intent.ACTION_PACKAGE_ADDED)
    // @ts-ignore
    filter.addAction(Intent.ACTION_PACKAGE_REPLACED)
    filter.addDataScheme('package')
    return new Promise((resolve) => {
    const broadcastReceiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
    onReceive: (context: any, intent: any) => {
    const action = intent.getAction()
    const data = intent.getData()
    if (
    // @ts-ignore
    (action === Intent.ACTION_PACKAGE_ADDED || action === Intent.ACTION_PACKAGE_REPLACED)

继续阅读 »

/**

  • 监听应用启动
  • 通过广播接收器监听目标应用的启动事件
    */
    const receiveBroadcastOfAppInstall: {
    broadcastReceiver?: any;
    (targetPname: string): Promise<void>
    } = (targetPname) => {
    const main = plus.android.runtimeMainActivity()
    if (receiveBroadcastOfAppInstall.broadcastReceiver) {
    // @ts-ignore
    main.unregisterReceiver(receiveBroadcastOfAppInstall.broadcastReceiver)
    receiveBroadcastOfAppInstall.broadcastReceiver = null
    }

    const Intent = plus.android.importClass('android.content.Intent')
    const IntentFilter = plus.android.importClass('android.content.IntentFilter')
    const Uri = plus.android.importClass('android.net.Uri')
    // @ts-ignore
    const filter = new IntentFilter()
    // @ts-ignore
    filter.addAction(Intent.ACTION_PACKAGE_ADDED)
    // @ts-ignore
    filter.addAction(Intent.ACTION_PACKAGE_REPLACED)
    filter.addDataScheme('package')
    return new Promise((resolve) => {
    const broadcastReceiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
    onReceive: (context: any, intent: any) => {
    const action = intent.getAction()
    const data = intent.getData()
    if (
    // @ts-ignore
    (action === Intent.ACTION_PACKAGE_ADDED || action === Intent.ACTION_PACKAGE_REPLACED)

收起阅读 »

uniCloud阿里云服务空间云函数计费规则调整导致我们费用暴涨几十倍,我们怎么办?

bug反馈

办法1:
直接做项目迁移,迁移到支付宝云

办法2:
如果有使用的uni-admin开发后台管理的,但是又没有用到数据统计的,先去掉二个定时运行的云函数:
官方的uni-admin及uni-starter内置定时任务如下:
uni-stat-cron:uni 统计,每小时运行 1 次,删除可节省 1 天的保底费用 0.24 元(2160Gbs)
uni-analyse-searchhot:热点搜索,每 2 小时运行 1 次,删除可节省 1 天的保底费用 0.12 元(1080Gbs)
自己项目的定时运行的云函数也可以做下取舍,再全局审查项目,合并一些云函数,有的页面可能是一进来就调用二三个云函数的做下合并

办法3
这是最无奈的办法,知道希望很小,但是我们要试一试,我正在组织针对阿里云这一次修改的一个投诉,但是个人的力量是很微薄的,人多才力量大,我们一起加油,加入这个集体投诉,希望官方能听到我们声音
集体投诉地址:https://tousu.sina.com.cn/grp_comp/view/G17395081502


方法3已经试过,得到了阿里云的回复,说我没有直接用阿里云的产品,用阿里云产品的是unicloud,有什么问题应该由unicloud官方派人跟阿里云沟通,unicloud官方能不能派个人去沟通争取一下。

继续阅读 »

办法1:
直接做项目迁移,迁移到支付宝云

办法2:
如果有使用的uni-admin开发后台管理的,但是又没有用到数据统计的,先去掉二个定时运行的云函数:
官方的uni-admin及uni-starter内置定时任务如下:
uni-stat-cron:uni 统计,每小时运行 1 次,删除可节省 1 天的保底费用 0.24 元(2160Gbs)
uni-analyse-searchhot:热点搜索,每 2 小时运行 1 次,删除可节省 1 天的保底费用 0.12 元(1080Gbs)
自己项目的定时运行的云函数也可以做下取舍,再全局审查项目,合并一些云函数,有的页面可能是一进来就调用二三个云函数的做下合并

办法3
这是最无奈的办法,知道希望很小,但是我们要试一试,我正在组织针对阿里云这一次修改的一个投诉,但是个人的力量是很微薄的,人多才力量大,我们一起加油,加入这个集体投诉,希望官方能听到我们声音
集体投诉地址:https://tousu.sina.com.cn/grp_comp/view/G17395081502


方法3已经试过,得到了阿里云的回复,说我没有直接用阿里云的产品,用阿里云产品的是unicloud,有什么问题应该由unicloud官方派人跟阿里云沟通,unicloud官方能不能派个人去沟通争取一下。

收起阅读 »