HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

uniapp 如何监听IPHONE蓝牙的 开启、关闭、暂停?

uniapp原生插件

目前已经实现可以监听到蓝牙的开启 和关闭状态,但是IPHONE的蓝牙还有个 暂停的状态。

APP就无法监听到了~

目前已经实现可以监听到蓝牙的开启 和关闭状态,但是IPHONE的蓝牙还有个 暂停的状态。

APP就无法监听到了~

app 获取用户截图

uniapp
let pages = getCurrentPages();    
            let page = pages[pages.length - 1];    
            let ws = page.$getAppWebview();    
            let bitmap = new plus.nativeObj.Bitmap('drawScreen');    
            // 将webview内容绘制到Bitmap对象中    
            ws.draw(bitmap, () => {    
              // 保存图片到本地    
              bitmap.save("_doc/drawScreen.jpg", {    
                overwrite: true    
              }, res => {    
                console.log(res.target); // 图片地址  
                  uni.showModal({  
                    title:'11111' + res.target  
                  })  
                  this.image = res.target  
                bitmap.clear(); // 清除Bitmap对象    
              }, error => {    
                  uni.showModal({  
                    title:JSON.stringify(error)  
                  })  
                console.log(JSON.stringify(error)); // 保存失败信息    
                bitmap.clear(); // 清除Bitmap对象    
              });    
              // bitmap.clear(); // 清除Bitmap对象    
            }, error => {    
              console.log(JSON.stringify(error)); // 绘制失败    
            }, {    
              check: true, // 设置为检测白屏    
            });  
            return 
继续阅读 »
let pages = getCurrentPages();    
            let page = pages[pages.length - 1];    
            let ws = page.$getAppWebview();    
            let bitmap = new plus.nativeObj.Bitmap('drawScreen');    
            // 将webview内容绘制到Bitmap对象中    
            ws.draw(bitmap, () => {    
              // 保存图片到本地    
              bitmap.save("_doc/drawScreen.jpg", {    
                overwrite: true    
              }, res => {    
                console.log(res.target); // 图片地址  
                  uni.showModal({  
                    title:'11111' + res.target  
                  })  
                  this.image = res.target  
                bitmap.clear(); // 清除Bitmap对象    
              }, error => {    
                  uni.showModal({  
                    title:JSON.stringify(error)  
                  })  
                console.log(JSON.stringify(error)); // 保存失败信息    
                bitmap.clear(); // 清除Bitmap对象    
              });    
              // bitmap.clear(); // 清除Bitmap对象    
            }, error => {    
              console.log(JSON.stringify(error)); // 绘制失败    
            }, {    
              check: true, // 设置为检测白屏    
            });  
            return 
收起阅读 »

关于targetSdkVersion设置为34后安卓12高版本SDK无法识别NFC的问题解决

NFC

按正常的Native.js 方法来调用NFC 在安卓低版本的SDK 是没有问题的,单是当我们将 targetSdkVersion 设置为34 及安卓的API 级别调高后 在代码中

pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);  

这个方法就回出现问题,正常的是有返回的值的,但是升级为高版本SDK 就返回的是null。
标准基座的话是没有问题,但是自定义和正式打包的话就会返回null。因此我们需要将这个方法进行改造

改造为:

var pendingIntent = PendingIntent.getActivity(ESUtils.NFC.mainNFC, 0, _intent, PendingIntent.FLAG_MUTABLE);

将最后一个参数 0 改为 PendingIntent.FLAG_MUTABLE固定值 就可以了

社区有很多的 方法 包括
https://ask.dcloud.net.cn/article/35690
https://ask.dcloud.net.cn/article/35046
https://ask.dcloud.net.cn/question/12942
都可以使用 只需要将 对应的上面的 替换就可以了。
业务逻辑 自己就可以搞定

继续阅读 »

按正常的Native.js 方法来调用NFC 在安卓低版本的SDK 是没有问题的,单是当我们将 targetSdkVersion 设置为34 及安卓的API 级别调高后 在代码中

pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);  

这个方法就回出现问题,正常的是有返回的值的,但是升级为高版本SDK 就返回的是null。
标准基座的话是没有问题,但是自定义和正式打包的话就会返回null。因此我们需要将这个方法进行改造

改造为:

var pendingIntent = PendingIntent.getActivity(ESUtils.NFC.mainNFC, 0, _intent, PendingIntent.FLAG_MUTABLE);

将最后一个参数 0 改为 PendingIntent.FLAG_MUTABLE固定值 就可以了

社区有很多的 方法 包括
https://ask.dcloud.net.cn/article/35690
https://ask.dcloud.net.cn/article/35046
https://ask.dcloud.net.cn/question/12942
都可以使用 只需要将 对应的上面的 替换就可以了。
业务逻辑 自己就可以搞定

收起阅读 »

HBuilderX 查看页面历史记录

今天不小心把代码回撤了,导致今天写的组件和页面代码全都回到了昨天提交git的时间段。这一刻我是崩溃的,还有编辑器能查看页面保存的历史记录,稍稍松了口气,以下是查询历史记录的步骤

选中一个项目文件,点击右键会出现本地历史记录的选项 随后出现历史记录 自己慢慢找到最新的代码文件

如果你和我一样,今天新建的组件文件也被回撤了,那我觉得这泰酷拉!

先找一个之前页面打开历史记录,然后打开资源管理器

在这个目录下返回上一级,就能找到所有页面的页面历史记录了,自己回想一下什么时间段修改了之前的代码

继续阅读 »

今天不小心把代码回撤了,导致今天写的组件和页面代码全都回到了昨天提交git的时间段。这一刻我是崩溃的,还有编辑器能查看页面保存的历史记录,稍稍松了口气,以下是查询历史记录的步骤

选中一个项目文件,点击右键会出现本地历史记录的选项 随后出现历史记录 自己慢慢找到最新的代码文件

如果你和我一样,今天新建的组件文件也被回撤了,那我觉得这泰酷拉!

先找一个之前页面打开历史记录,然后打开资源管理器

在这个目录下返回上一级,就能找到所有页面的页面历史记录了,自己回想一下什么时间段修改了之前的代码

收起阅读 »

APP,小程序,快应用等都需要备案了

APP,小程序,快应用等都需要备案了,有没有备案过的 分享一下

工信部文件

工业和信息化部关于开展移动互联网应用程序备案工作的通知
https://wap.miit.gov.cn/zwgk/zcwj/wjfb/tz/art/2023/art_920db564162e4312916a01bed6540ad8.html

《工业和信息化部关于开展移动互联网应用程序备案工作的通知》解读
https://wap.miit.gov.cn/zwgk/zcjd/art/2023/art_39b4f1acc36745b98478e0ec3e07128d.html

一图读懂APP备案
https://wap.miit.gov.cn/zwgk/zcjd/art/2023/art_9f3a1277fdcb42d68e1eacd37787ae04.html

继续阅读 »

APP,小程序,快应用等都需要备案了,有没有备案过的 分享一下

工信部文件

工业和信息化部关于开展移动互联网应用程序备案工作的通知
https://wap.miit.gov.cn/zwgk/zcwj/wjfb/tz/art/2023/art_920db564162e4312916a01bed6540ad8.html

《工业和信息化部关于开展移动互联网应用程序备案工作的通知》解读
https://wap.miit.gov.cn/zwgk/zcjd/art/2023/art_39b4f1acc36745b98478e0ec3e07128d.html

一图读懂APP备案
https://wap.miit.gov.cn/zwgk/zcjd/art/2023/art_9f3a1277fdcb42d68e1eacd37787ae04.html

收起阅读 »

vue3+ts class-style

因为我本身是java程序员,习惯了ts class-style模式的语法糖。
vue2的时候用的是vue-property-decorator,但是在vue3下
使用vue-property-decorator会报错,而且这个插件已不再维护。
google了半天,找到另外一个开源的插件vue-facing-decorator。

目前已经整合到vue3 uniapp 中,以下是代码示例,习惯
class-style语法糖的同学,可以拿去用拉。

对于uniapp 生命周期函数,可以通过挂载的方式实现。


import { MyVue } from "@/common/MyVue";  
import LoggerUtil from "@/utils/LoggerUtil";  
import { Component } from "vue-facing-decorator";  
@Component  
export default class Home extends MyVue {  
    title = "hello";  
    onLoad() {  
        uni.setNavigationBarTitle({ title: "首页" });  
        LoggerUtil.info("App onLoad111111");  
    }  
    onShow() {  
        LoggerUtil.info("App Show 1");  
        this.title += ",vue3"  
    }  
    onHide() {  
        LoggerUtil.info("App Hide");  
    }  
    onChange() {  
        LoggerUtil.info("App Change");  
        this.title += ",vue3"  
    }  

}  

vx: BusyMr-QHD

继续阅读 »

因为我本身是java程序员,习惯了ts class-style模式的语法糖。
vue2的时候用的是vue-property-decorator,但是在vue3下
使用vue-property-decorator会报错,而且这个插件已不再维护。
google了半天,找到另外一个开源的插件vue-facing-decorator。

目前已经整合到vue3 uniapp 中,以下是代码示例,习惯
class-style语法糖的同学,可以拿去用拉。

对于uniapp 生命周期函数,可以通过挂载的方式实现。


import { MyVue } from "@/common/MyVue";  
import LoggerUtil from "@/utils/LoggerUtil";  
import { Component } from "vue-facing-decorator";  
@Component  
export default class Home extends MyVue {  
    title = "hello";  
    onLoad() {  
        uni.setNavigationBarTitle({ title: "首页" });  
        LoggerUtil.info("App onLoad111111");  
    }  
    onShow() {  
        LoggerUtil.info("App Show 1");  
        this.title += ",vue3"  
    }  
    onHide() {  
        LoggerUtil.info("App Hide");  
    }  
    onChange() {  
        LoggerUtil.info("App Change");  
        this.title += ",vue3"  
    }  

}  

vx: BusyMr-QHD

收起阅读 »

uni-starter设置邀请码裂变功能修改

本人新手,自己摸索出来的,不正之处还请路过的前辈指点。

网上找资料时总能刷到前辈们关于各种坑的文章,作为新手,因为没有基础(没学过编程,仅靠看手册写了两个tp5网站,易语言、E4A、aardio都学过,没早点遇到unicloud浪费了很多时间!),确实遇到很多问题,文档上仅几句话带过,其他地方又找不到前辈们留下的经验,所以解决完这个问题,想着发第一个贴子,留给新手们参考一下。

autoSetInviteCode: true
生成海报时带上参数

http://localhost:8080/pages/ucenter/t1/t1?invite=12366  
//此处invite应该获取分享者的 my_invite_code

用户打开后,将参数缓存

onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数  
                console.log(option.invite); //打印出上个页面传递的参数。  
                uni.setStorageSync('share_id',option.invite)                  
            },

修改common/appInit.js文件拦截逻辑,给inviteCode传值即可

//拦截云对象请求  
    uniCloud.interceptObject({  
        async invoke({  
            objectName, // 云对象名称  
            methodName, // 云对象的方法名称  
            params // 参数列表  
        }) {  
            if(objectName == "uni-id-co" && (methodName.includes('loginBy') ||  ['login','registerUser'].includes(methodName) )){  
                console.log('执行登录相关云对象');  
                //获取缓存中的share_id传递给inviteCode,后续系统会自动关联裂变信息  
                params[0].inviteCode = await new Promise((callBack) => {  
                    var share_id = uni.getStorageSync('share_id');    
                    console.log('获取share_id->',share_id);  
                    callBack(share_id)                      
                })  
                // console.log(params);  
            }  
            // console.log(params);  
        }  
    })

项目中原本用的uni.setClipboardData,在H5中好像工作不正常,改为uni.getStorageSync正常,小程序还没测试

搞错了,uni.setClipboardData在H5中也正常

继续阅读 »

本人新手,自己摸索出来的,不正之处还请路过的前辈指点。

网上找资料时总能刷到前辈们关于各种坑的文章,作为新手,因为没有基础(没学过编程,仅靠看手册写了两个tp5网站,易语言、E4A、aardio都学过,没早点遇到unicloud浪费了很多时间!),确实遇到很多问题,文档上仅几句话带过,其他地方又找不到前辈们留下的经验,所以解决完这个问题,想着发第一个贴子,留给新手们参考一下。

autoSetInviteCode: true
生成海报时带上参数

http://localhost:8080/pages/ucenter/t1/t1?invite=12366  
//此处invite应该获取分享者的 my_invite_code

用户打开后,将参数缓存

onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数  
                console.log(option.invite); //打印出上个页面传递的参数。  
                uni.setStorageSync('share_id',option.invite)                  
            },

修改common/appInit.js文件拦截逻辑,给inviteCode传值即可

//拦截云对象请求  
    uniCloud.interceptObject({  
        async invoke({  
            objectName, // 云对象名称  
            methodName, // 云对象的方法名称  
            params // 参数列表  
        }) {  
            if(objectName == "uni-id-co" && (methodName.includes('loginBy') ||  ['login','registerUser'].includes(methodName) )){  
                console.log('执行登录相关云对象');  
                //获取缓存中的share_id传递给inviteCode,后续系统会自动关联裂变信息  
                params[0].inviteCode = await new Promise((callBack) => {  
                    var share_id = uni.getStorageSync('share_id');    
                    console.log('获取share_id->',share_id);  
                    callBack(share_id)                      
                })  
                // console.log(params);  
            }  
            // console.log(params);  
        }  
    })

项目中原本用的uni.setClipboardData,在H5中好像工作不正常,改为uni.getStorageSync正常,小程序还没测试

搞错了,uni.setClipboardData在H5中也正常

收起阅读 »

15年开发经验 在线全职接单

外包接单

熟练掌握ps、ai、php和js技术 设计 ui 网站 app 小程序 桌面都可以做 价格优惠 效果好
手机微信同号: 19939057361
QQ:2238267409

熟练掌握ps、ai、php和js技术 设计 ui 网站 app 小程序 桌面都可以做 价格优惠 效果好
手机微信同号: 19939057361
QQ:2238267409

解决H5环境下echarts tooltip无法显示html的问题

h5 echart

我使用的是目前echarts最新版本5.4.3,安装方式是npm

其他帖子说在main.js中添加以下代码,但本人添加后依旧无效

window.wx = undefined

看了源码之后,发现确实是window.wx的问题,echarts识别为微信环境了。
但为什么已经设置为undefined了还是误判了呢?于是我输出了一下加载顺序,发现main.js中此行代码的执行顺序比echarts初始化晚,但我已经放到第一行了。

什么原因呢,我发现import导入模块的执行顺序比其他代码优先,而echarts是在导入时就执行初始化了,所以不管我写在哪就会比echarts初始化晚。

如何解决呢?那就新建一个自定义模块,在自定义模块中设置window.wx就好了嘛,以下为模块代码:

if(window.wx) {  
    window.wx = undefined  
}  

export default {  

}

然后在main.js第一行导入该模块,刷新一下,html就正常显示啦。

继续阅读 »

我使用的是目前echarts最新版本5.4.3,安装方式是npm

其他帖子说在main.js中添加以下代码,但本人添加后依旧无效

window.wx = undefined

看了源码之后,发现确实是window.wx的问题,echarts识别为微信环境了。
但为什么已经设置为undefined了还是误判了呢?于是我输出了一下加载顺序,发现main.js中此行代码的执行顺序比echarts初始化晚,但我已经放到第一行了。

什么原因呢,我发现import导入模块的执行顺序比其他代码优先,而echarts是在导入时就执行初始化了,所以不管我写在哪就会比echarts初始化晚。

如何解决呢?那就新建一个自定义模块,在自定义模块中设置window.wx就好了嘛,以下为模块代码:

if(window.wx) {  
    window.wx = undefined  
}  

export default {  

}

然后在main.js第一行导入该模块,刷新一下,html就正常显示啦。

收起阅读 »

app升级、整包更新和热更新组件 支持vue3 支持打开安卓、苹果应用市场,wgt静默更新

升级更新 热更新

整包更新和热更新组件 支持vue3 支持打开安卓、苹果应用市场,支持wgt静默更新
ui图是采用uniapp官方更新组件的ui,如不满足需要,可自行替换
一键式检查更新,同时支持整包升级与wgt资源包更新 支持打开安卓自带的应用市场和苹果appstore
好看、实用、可自定义的客户端提示框
支持强制更新,无法退出
支持静默更新,下次启动后更新的内容自动生效
支持覆盖原生tabar,原生导航栏

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




继续阅读 »

整包更新和热更新组件 支持vue3 支持打开安卓、苹果应用市场,支持wgt静默更新
ui图是采用uniapp官方更新组件的ui,如不满足需要,可自行替换
一键式检查更新,同时支持整包升级与wgt资源包更新 支持打开安卓自带的应用市场和苹果appstore
好看、实用、可自定义的客户端提示框
支持强制更新,无法退出
支持静默更新,下次启动后更新的内容自动生效
支持覆盖原生tabar,原生导航栏

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




收起阅读 »

uni-app中nvue如何隐藏滚动条

去掉滚动条

之前以为在uniapp中使用滚动只能用scroll-view 后面发现nvue可以使用scroller组件来代替 scroll-view

具体参数uniapp官方 没用,得参考weex文档。

以下是使用代码

        <scroller class="scroll-view" scroll-direction="horizontal" :show-scrollbar="false">  
            <fui-data-tag :options="options" :radius="16" activeBgColor="#226ADC" border-color="#226ADC" active-color="#fff"></fui-data-tag>  
        </scroller>
继续阅读 »

之前以为在uniapp中使用滚动只能用scroll-view 后面发现nvue可以使用scroller组件来代替 scroll-view

具体参数uniapp官方 没用,得参考weex文档。

以下是使用代码

        <scroller class="scroll-view" scroll-direction="horizontal" :show-scrollbar="false">  
            <fui-data-tag :options="options" :radius="16" activeBgColor="#226ADC" border-color="#226ADC" active-color="#fff"></fui-data-tag>  
        </scroller>
收起阅读 »

10年编程经验,主力语言PHP,在线接活,价格优惠,服务好

外包接单

前后端全能,APP、网站、桌面版,小程序都可以做,需要的加我详谈。
微信: Surzace
QQ: 2238267409

前后端全能,APP、网站、桌面版,小程序都可以做,需要的加我详谈。
微信: Surzace
QQ: 2238267409