HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

subNvue踩坑奇遇记(二)

subnvue

在subNVue开发过程中,发现当page.json中设置透明色且默认高度为100%时,例如:

                      "subNVues": [  
                        {  
                            "id": "test",  
                            "path":"pages/components/subNVue/test/test",  
                            "type":"popup",  
                            "style": {  
                                "background": "transparent"  
                            }  
                        }  
                    ]

真机调试时,有点击穿透的问题,具体表现为,点击页面中没有元素占位的空挡区域,会触发子窗体关闭,类似点击mask关闭子窗体的效果。

但是设置为具体的颜色,就不会出现上述问题,例如"background": "#FFFFFF",后来尝试使用rgb背景色,并设置为全透明,问题解决,例如:

                     "```javascript  
                                 subNVues": [  
                    {  
                        "id": "test",  
                        "path":"pages/components/subNVue/test/test",  
                        "type":"popup",  
                        "style": {  
                            "background": "rgba(0,0,0,0)"  
                        }  
                    }  
                ]
继续阅读 »

在subNVue开发过程中,发现当page.json中设置透明色且默认高度为100%时,例如:

                      "subNVues": [  
                        {  
                            "id": "test",  
                            "path":"pages/components/subNVue/test/test",  
                            "type":"popup",  
                            "style": {  
                                "background": "transparent"  
                            }  
                        }  
                    ]

真机调试时,有点击穿透的问题,具体表现为,点击页面中没有元素占位的空挡区域,会触发子窗体关闭,类似点击mask关闭子窗体的效果。

但是设置为具体的颜色,就不会出现上述问题,例如"background": "#FFFFFF",后来尝试使用rgb背景色,并设置为全透明,问题解决,例如:

                     "```javascript  
                                 subNVues": [  
                    {  
                        "id": "test",  
                        "path":"pages/components/subNVue/test/test",  
                        "type":"popup",  
                        "style": {  
                            "background": "rgba(0,0,0,0)"  
                        }  
                    }  
                ]
收起阅读 »

【打包失败提示】本地安装包生成失败,请重试或者切换到非安心打包模式进行打包

App打包

重新打包一次就好,不需要修改任何信息

重新打包一次就好,不需要修改任何信息

uni-app 小程序解决 PNG序列帧动画闪烁问题,app也适用

uni-app 小程序解决 PNG序列帧动画闪烁问题,app也适用
有偿提供代码
联系QQ:543610866

uni-app 小程序解决 PNG序列帧动画闪烁问题,app也适用
有偿提供代码
联系QQ:543610866

uni-app ios 实现闹钟本地推送,可设置时候提示通知,app完全关闭也可以收到,可自定义推送声音

uni-app ios 实现闹钟本地推送,可设置什么时候提示通知,app完全关闭也可以收到,可自定义推送声音
有偿提供代码
有需要的联系QQ:543610866

uni-app ios 实现闹钟本地推送,可设置什么时候提示通知,app完全关闭也可以收到,可自定义推送声音
有偿提供代码
有需要的联系QQ:543610866

subNvue踩坑奇遇记(一)

subnvue

1、对subNVue子窗体的样式修改,要放在subNVue.show接口的回调函数中,注意此时的this已经不在上下文,需要在调用show接口前const self = this;重新指向,才能使用窗口的接口

const subNVue = uni.getSubNVueById('selector')  
                const self = this  
                subNVue.show('slide-in-right', 300, function(){  
                    const statusBarHeight = `${uni.getSystemInfoSync().statusBarHeight}px`  
                    const height = `${(uni.getSystemInfoSync().screenHeight  - uni.getSystemInfoSync().statusBarHeight)}px`  
                    subNVue.setStyle({  
                        top: statusBarHeight,   
                        height: height  
                    })  
                });

2、在主窗口向subNVue子窗体发起消息时,要加延时才会触发,即使放在show()接口的回调中,也需要加延时,调试了很久子窗口都无法监听到事件,后来加了延时就可以了(非常痛苦,在uniapp框架下,如果发现一些代码没有效果,都要尝试一下增加延时)

setTimeout(() => {  
                        uni.$emit('selector-init', {  
                            title: self.$t('kkkk‘)  
                        })  
                    }, 200)

3、在子窗体上要注意,nvue是不支持vuex的,从nvue调用的外部js函数,该js函数中也是无法读取vuex的,如果有vue和nvue的共享变量,需要放到storage里面或者其他可以共享的方式

4、阶段性总结一下,非必要情况下,还是不要用subNvue了,样式支持有限、各种奇怪问题、不支持vuex等等,最主要是样式的调试非常不方便,目前我还没找到像webview模式一样方便的调试方法。有知道样式调试方法的,还希望不吝赐教。说到调试,补充一句,subNVue的官方文档实在是太少了。

继续阅读 »

1、对subNVue子窗体的样式修改,要放在subNVue.show接口的回调函数中,注意此时的this已经不在上下文,需要在调用show接口前const self = this;重新指向,才能使用窗口的接口

const subNVue = uni.getSubNVueById('selector')  
                const self = this  
                subNVue.show('slide-in-right', 300, function(){  
                    const statusBarHeight = `${uni.getSystemInfoSync().statusBarHeight}px`  
                    const height = `${(uni.getSystemInfoSync().screenHeight  - uni.getSystemInfoSync().statusBarHeight)}px`  
                    subNVue.setStyle({  
                        top: statusBarHeight,   
                        height: height  
                    })  
                });

2、在主窗口向subNVue子窗体发起消息时,要加延时才会触发,即使放在show()接口的回调中,也需要加延时,调试了很久子窗口都无法监听到事件,后来加了延时就可以了(非常痛苦,在uniapp框架下,如果发现一些代码没有效果,都要尝试一下增加延时)

setTimeout(() => {  
                        uni.$emit('selector-init', {  
                            title: self.$t('kkkk‘)  
                        })  
                    }, 200)

3、在子窗体上要注意,nvue是不支持vuex的,从nvue调用的外部js函数,该js函数中也是无法读取vuex的,如果有vue和nvue的共享变量,需要放到storage里面或者其他可以共享的方式

4、阶段性总结一下,非必要情况下,还是不要用subNvue了,样式支持有限、各种奇怪问题、不支持vuex等等,最主要是样式的调试非常不方便,目前我还没找到像webview模式一样方便的调试方法。有知道样式调试方法的,还希望不吝赐教。说到调试,补充一句,subNVue的官方文档实在是太少了。

收起阅读 »

tob-use 最高效好用的 composition-api 库

分享插件 vue3

tob-use

tob-use 是由 composition-api 构建的 use 库,主要面向 vue3 下的 uniapp 高效开发

特点

  1. 功能丰富,60+ 的功能供你选择
  2. 按需加载,让你的应用体积更小
  3. 灵活可配置,可配置的事件过滤器
  4. 支持多端,支持 app,h5 和小程序
  5. composition,完全由 composition-api 构建
  6. vue3,支持最现代化的 vue3 版本

在线文档

点击跳转 tob-use

继续阅读 »

tob-use

tob-use 是由 composition-api 构建的 use 库,主要面向 vue3 下的 uniapp 高效开发

特点

  1. 功能丰富,60+ 的功能供你选择
  2. 按需加载,让你的应用体积更小
  3. 灵活可配置,可配置的事件过滤器
  4. 支持多端,支持 app,h5 和小程序
  5. composition,完全由 composition-api 构建
  6. vue3,支持最现代化的 vue3 版本

在线文档

点击跳转 tob-use

收起阅读 »

blob:格式的链接 在uniapp开发中怎么处理

在 H5上预览或者下载 docx文件/pdf文件。 uniapp 能否支持打开此类型的链接?应该怎么样处理bolb格式的链接。

在 H5上预览或者下载 docx文件/pdf文件。 uniapp 能否支持打开此类型的链接?应该怎么样处理bolb格式的链接。

考虑用renderjs做app和h5端的上传

上传文件
<template>  
</template>  
<script>  
    export default {  
        methods: {  
            chooseAndUpload() {  
                this.chooseFile(() => {  

                })  
            },  
            chooseFile(cb) {  
                // #ifdef APP-VUE || H5  
                this.file.choose((files) => {  
                    cb && cb(files)  
                })  
                // #endif  
                // #ifdef MP-WEIXIN  
                this.chooseFromWX((res) => {  
                    console.log(res);  
                    cb && cb(res)  
                })  
                // #endif  
            },  
            chooseFromWX(cb) {  
                wx.chooseMessageFile({  
                    count: 9,  
                    type: 'file',  
                    success(res) {  
                        cb && cb(res);  
                    }  
                })  
            }  
        },  
    }  
</script>  
<script module="file" lang="renderjs">  
    let inputEl = {  
        el: null,  
        inject(cb) {  
            if (!this.el) {  
                let input = document.createElement("input")  
                input.type = "file"  
                input.id = "_file"  
                input.style.display = "none"  
                input.addEventListener("change", cb)  
                this.el = input  
                document.body.append(input)  
            }  
            this.el.click()  
            return this.el  
        },  
        remove(cb) {  
            if (this.el) {  
                this.el.removeEventListener("change", cb)  
                this.el.remove()  
                this.el = null  
            }  
        }  
    }  
    export default {  
        methods: {  
            _success() {},  
            choose(cb) {  
                inputEl.inject(this.fileChange)  
                cb && (this._success = cb)  
            },  
            fileChange(e) {  
                this._success && this._success(e.target.files)  
                inputEl.remove(this.fileChange)  
            }  
        }  
    }  
</script>  
<style>  
</style>

提供一种思路,进测试能够再我的安卓机上选择文件,别的还需要完善,各位有指教的话请发表一下自己的思路

继续阅读 »
<template>  
</template>  
<script>  
    export default {  
        methods: {  
            chooseAndUpload() {  
                this.chooseFile(() => {  

                })  
            },  
            chooseFile(cb) {  
                // #ifdef APP-VUE || H5  
                this.file.choose((files) => {  
                    cb && cb(files)  
                })  
                // #endif  
                // #ifdef MP-WEIXIN  
                this.chooseFromWX((res) => {  
                    console.log(res);  
                    cb && cb(res)  
                })  
                // #endif  
            },  
            chooseFromWX(cb) {  
                wx.chooseMessageFile({  
                    count: 9,  
                    type: 'file',  
                    success(res) {  
                        cb && cb(res);  
                    }  
                })  
            }  
        },  
    }  
</script>  
<script module="file" lang="renderjs">  
    let inputEl = {  
        el: null,  
        inject(cb) {  
            if (!this.el) {  
                let input = document.createElement("input")  
                input.type = "file"  
                input.id = "_file"  
                input.style.display = "none"  
                input.addEventListener("change", cb)  
                this.el = input  
                document.body.append(input)  
            }  
            this.el.click()  
            return this.el  
        },  
        remove(cb) {  
            if (this.el) {  
                this.el.removeEventListener("change", cb)  
                this.el.remove()  
                this.el = null  
            }  
        }  
    }  
    export default {  
        methods: {  
            _success() {},  
            choose(cb) {  
                inputEl.inject(this.fileChange)  
                cb && (this._success = cb)  
            },  
            fileChange(e) {  
                this._success && this._success(e.target.files)  
                inputEl.remove(this.fileChange)  
            }  
        }  
    }  
</script>  
<style>  
</style>

提供一种思路,进测试能够再我的安卓机上选择文件,别的还需要完善,各位有指教的话请发表一下自己的思路

收起阅读 »

uni-app nvue andorid 哀悼日全局灰,灰度滤镜,解决filter灰色滤镜不能使用

uni-app nvue andorid 哀悼日全局灰,灰度滤镜,解决filter灰色滤镜不能使用
有偿提供代码
QQ:543610866

全局哀悼日全局灰、灰度滤镜、vue和nvue都是可用(ios、andorid):https://ext.dcloud.net.cn/plugin?id=7513

继续阅读 »

uni-app nvue andorid 哀悼日全局灰,灰度滤镜,解决filter灰色滤镜不能使用
有偿提供代码
QQ:543610866

全局哀悼日全局灰、灰度滤镜、vue和nvue都是可用(ios、andorid):https://ext.dcloud.net.cn/plugin?id=7513

收起阅读 »

【报Bug】在配置微信开发者工具路径中,浏览找不到桌面微信开发者工具文件。

【报Bug】在配置微信开发者工具路径中,浏览找不到桌面微信开发者工具文件。但是其他开发者工具路径能正常找到。
HBuilderX版本号:3.3.12alpha和标准版都一样
开发环境是 Windows.7旗舰版

【报Bug】在配置微信开发者工具路径中,浏览找不到桌面微信开发者工具文件。但是其他开发者工具路径能正常找到。
HBuilderX版本号:3.3.12alpha和标准版都一样
开发环境是 Windows.7旗舰版

招uniapp兼职4000-5000/月。每周工作5天

招前端兼职,月薪4000-5000 。 一周工作5天。要求至少一年半以上uniapp开发经验,熟悉Nvue 微信联系xiaoxuetong888

招前端兼职,月薪4000-5000 。 一周工作5天。要求至少一年半以上uniapp开发经验,熟悉Nvue 微信联系xiaoxuetong888

个推消息推送SDK之“故障排查”功能解析,快速排查推送异常情况

推送 消息推送 个推SDK

为帮助开发者更好地使用个推消息推送产品,我们梳理了个推消息推送产品的核心功能、典型应用场景,并提供实战案例作为参考,希望能够为大家找到提升推送效率的最佳路径!

本文为大家介绍个推消息推送的【故障排查】功能,欢迎大家阅读收藏!

故障排查

支持查询CID状态及绑定的devicetoken等信息,也支持单推推送测试全链路查询,帮助研发进行消息推送测试及问题排查。

核心价值:帮助推送测试问题排查

在集成过程中进行单推测试,可推送通知和透传消息,并查询推送路径排查消息未成功送达的原因,同时检测当前应用下的CID是否在线、包名、devicetoken等信息。

典型应用场景

1、推送测试:在通知消息和透传消息推送过程中,通过CID推送测试查询消息推送路径,排查消息是否成功送达以及消息未送达原因。

2、设备状态查询:通过【故障排查】功能检测当前应用下的CID是否在线、包名、devicetoken、通知栏开关、机型等信息,通过这些信息查询设备状态,排查消息未成功送达的原因。比如:信息显示通知栏开关为关闭状态,导致消息无法在通知栏展示,需要打开通知栏才可接收到消息。

实战案例

某工具类APP在给用户推送重要消息时,发现消息到达率较低,为了提升消息推送达到率,该APP运营通过【故障排查】功能查询设备通知栏状态,针对关闭通知栏的用户引导其打开APP通知栏提醒,确保重要消息的有效到达。

使用方式

1、登录个推开发者中心,点击个推消息推送-选择应用-配置管理-故障排查功能。

2、设备状态查询:在状态查询功能模块,输入CID即可一键检测设备状态。

3、推送测试:在推送测试功能模块,输入CID即可检测消息推送状态。 以上如有疑问,可添加企业微信咨询【故障排查】功能。

以上如有疑问,可添加企业微信咨询【故障排查】功能。

继续阅读 »

为帮助开发者更好地使用个推消息推送产品,我们梳理了个推消息推送产品的核心功能、典型应用场景,并提供实战案例作为参考,希望能够为大家找到提升推送效率的最佳路径!

本文为大家介绍个推消息推送的【故障排查】功能,欢迎大家阅读收藏!

故障排查

支持查询CID状态及绑定的devicetoken等信息,也支持单推推送测试全链路查询,帮助研发进行消息推送测试及问题排查。

核心价值:帮助推送测试问题排查

在集成过程中进行单推测试,可推送通知和透传消息,并查询推送路径排查消息未成功送达的原因,同时检测当前应用下的CID是否在线、包名、devicetoken等信息。

典型应用场景

1、推送测试:在通知消息和透传消息推送过程中,通过CID推送测试查询消息推送路径,排查消息是否成功送达以及消息未送达原因。

2、设备状态查询:通过【故障排查】功能检测当前应用下的CID是否在线、包名、devicetoken、通知栏开关、机型等信息,通过这些信息查询设备状态,排查消息未成功送达的原因。比如:信息显示通知栏开关为关闭状态,导致消息无法在通知栏展示,需要打开通知栏才可接收到消息。

实战案例

某工具类APP在给用户推送重要消息时,发现消息到达率较低,为了提升消息推送达到率,该APP运营通过【故障排查】功能查询设备通知栏状态,针对关闭通知栏的用户引导其打开APP通知栏提醒,确保重要消息的有效到达。

使用方式

1、登录个推开发者中心,点击个推消息推送-选择应用-配置管理-故障排查功能。

2、设备状态查询:在状态查询功能模块,输入CID即可一键检测设备状态。

3、推送测试:在推送测试功能模块,输入CID即可检测消息推送状态。 以上如有疑问,可添加企业微信咨询【故障排查】功能。

以上如有疑问,可添加企业微信咨询【故障排查】功能。

收起阅读 »