HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

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即可检测消息推送状态。 以上如有疑问,可添加企业微信咨询【故障排查】功能。

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

收起阅读 »

个推消息推送之“标签设置”,打通应用标签实现精细化运营

推送 消息推送 个推SDK

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

本文为大家介绍个推消息推送的【标签设置】功能,欢迎大家阅读收藏!

标签设置
即单个设备单日设置标签的次数和个数。

核心价值:实现精细化标签推送

典型应用场景

将应用自有的用户标签绑定到个推系统,方便下发消息时进行标签圈选。例如电商类APP可直接圈选2个标签“女”“爱化妆”,将美妆类消息推送给女性用户。

实战案例

某阅读类APP运营通过该应用类标签圈选具有一定兴趣偏好的用户群,并推送该用户群感兴趣的内容来提升消息点击率。例如针对“教育”“游戏”等标签的用户推送该兴趣标签类别的书单。该APP研发通过个推接口将APP内的用户兴趣标签绑定在个推系统中,方便该运营通过兴趣标签直接圈选推送目标用户进行消息下发。该APP运营通过兴趣标签精细化推送书单,整体消息推送点击率提升了43.2%。

开通和使用方式

1、添加个推企业微信,申请升级【标签设置】VIP功能。

2、设备标签设置规则

①单个CID(即单个设备,CID是个推SDK对用户设备的唯一标识号),最多可设置100个标签,单个标签长度最大为32字符,标签总长度为512个字符。

②单设备标签设置为覆盖操作,会删除该设备历史绑定的所有标签。

③服务端和客户端都可以设置。

3、应用标签查看:登录个推开发者中心,点击个推消息推送-选择应用-配置管理-应用标签,搜索标签名称。

4、应用标签使用:创建推送-通知消息-目标选择-标签用户,选择应用标签中的标签名称即可针对该应用标签人群推送消息。

如果您对标签设置功能感兴趣,欢迎添加企业微信二维码回复【标签设置】联系我们,感谢您对个推的持续关注。

继续阅读 »

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

本文为大家介绍个推消息推送的【标签设置】功能,欢迎大家阅读收藏!

标签设置
即单个设备单日设置标签的次数和个数。

核心价值:实现精细化标签推送

典型应用场景

将应用自有的用户标签绑定到个推系统,方便下发消息时进行标签圈选。例如电商类APP可直接圈选2个标签“女”“爱化妆”,将美妆类消息推送给女性用户。

实战案例

某阅读类APP运营通过该应用类标签圈选具有一定兴趣偏好的用户群,并推送该用户群感兴趣的内容来提升消息点击率。例如针对“教育”“游戏”等标签的用户推送该兴趣标签类别的书单。该APP研发通过个推接口将APP内的用户兴趣标签绑定在个推系统中,方便该运营通过兴趣标签直接圈选推送目标用户进行消息下发。该APP运营通过兴趣标签精细化推送书单,整体消息推送点击率提升了43.2%。

开通和使用方式

1、添加个推企业微信,申请升级【标签设置】VIP功能。

2、设备标签设置规则

①单个CID(即单个设备,CID是个推SDK对用户设备的唯一标识号),最多可设置100个标签,单个标签长度最大为32字符,标签总长度为512个字符。

②单设备标签设置为覆盖操作,会删除该设备历史绑定的所有标签。

③服务端和客户端都可以设置。

3、应用标签查看:登录个推开发者中心,点击个推消息推送-选择应用-配置管理-应用标签,搜索标签名称。

4、应用标签使用:创建推送-通知消息-目标选择-标签用户,选择应用标签中的标签名称即可针对该应用标签人群推送消息。

如果您对标签设置功能感兴趣,欢迎添加企业微信二维码回复【标签设置】联系我们,感谢您对个推的持续关注。

收起阅读 »

未配置appkey或者配置错误

apk

  1. 项目src/main/assets/data/dcloud_control.xml里面的appid和开发者中心的appid一致
  2. 项目的build.gradle里面的applicationId和开发者中心的 Android 包名一致
  3. 项目的证书签名SHA1和开发者中心的Android 证书签名SHA1一致
  4. assets子目录改成appid
  5. src/main/assets/apps/xxx/www/manifest.json里面的id和开发者中心的appid一致(xxx表示appid)

最容易填错的是签名SHA1,一定要确保开发者中心配置的值和安装的apk的签名的值一致,找不到错误的情况下可以试试查看apk安装包的签名进行二次对比确认

其他参考官方指导

继续阅读 »

  1. 项目src/main/assets/data/dcloud_control.xml里面的appid和开发者中心的appid一致
  2. 项目的build.gradle里面的applicationId和开发者中心的 Android 包名一致
  3. 项目的证书签名SHA1和开发者中心的Android 证书签名SHA1一致
  4. assets子目录改成appid
  5. src/main/assets/apps/xxx/www/manifest.json里面的id和开发者中心的appid一致(xxx表示appid)

最容易填错的是签名SHA1,一定要确保开发者中心配置的值和安装的apk的签名的值一致,找不到错误的情况下可以试试查看apk安装包的签名进行二次对比确认

其他参考官方指导

收起阅读 »

VIP功能免费使用 | 个推消息推送SDK之“推送信息回调数据”,帮助快速查询设备是否收到消息

推送 消息推送

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

本文为大家介绍个推消息推送的【推送信息回调数据】功能,欢迎大家阅读收藏!

推送信息回调数据

将客户端feedback回执回传到APP自有服务器,帮助APP自主统计消息到达的数据明细,明确终端设备是否收到了消息。

核心价值:查询设备是否收到消息

将客户端是否收到消息的结果日志回传至自有服务器,帮助客户快速统计消息到达的情况。

典型应用场景

在较多单推场景下,通过推送信息回调数据功能,将客户端的信息到达情况回执回传到自身服务器,客户可以自主快速统计单推消息到达情况。

实战案例

某银行类APP在用户动账交易的时候,比如某公司账户发工资时,需要全量通知到该公司账户下的所有账户,通过【推送信息回调数据】可以快速查到哪些设备收到信息,哪些设备没有收到信息,从而可针对没有收到信息的设备通过短信、微信等多种方式进行消息全面触达。

开通方式

1、添加个推企业微信,申请开通【推送信息回调数据】VIP功能。

2、参考“ 个推消息回执回调操作步骤与使用文档”配置厂商和个推回执。

3、通过企业微信提供个推APPID和回执URL地址,待技术支持完成配置后,推送信息回调数据会自动发送至URL地址。

如果您对推送信息回调数据功能感兴趣,欢迎添加企业微信二维码回复【开通推送信息回调数据】联系我们,感谢您对个推的持续关注。

继续阅读 »

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

本文为大家介绍个推消息推送的【推送信息回调数据】功能,欢迎大家阅读收藏!

推送信息回调数据

将客户端feedback回执回传到APP自有服务器,帮助APP自主统计消息到达的数据明细,明确终端设备是否收到了消息。

核心价值:查询设备是否收到消息

将客户端是否收到消息的结果日志回传至自有服务器,帮助客户快速统计消息到达的情况。

典型应用场景

在较多单推场景下,通过推送信息回调数据功能,将客户端的信息到达情况回执回传到自身服务器,客户可以自主快速统计单推消息到达情况。

实战案例

某银行类APP在用户动账交易的时候,比如某公司账户发工资时,需要全量通知到该公司账户下的所有账户,通过【推送信息回调数据】可以快速查到哪些设备收到信息,哪些设备没有收到信息,从而可针对没有收到信息的设备通过短信、微信等多种方式进行消息全面触达。

开通方式

1、添加个推企业微信,申请开通【推送信息回调数据】VIP功能。

2、参考“ 个推消息回执回调操作步骤与使用文档”配置厂商和个推回执。

3、通过企业微信提供个推APPID和回执URL地址,待技术支持完成配置后,推送信息回调数据会自动发送至URL地址。

如果您对推送信息回调数据功能感兴趣,欢迎添加企业微信二维码回复【开通推送信息回调数据】联系我们,感谢您对个推的持续关注。

收起阅读 »