HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

H5 图片压缩

h5+ uniapp

最近把app转成h5后,发现图片不能自动压缩。现在手机像素高,拍照都是5m左右的,这样的图片上传速度极慢。在社区里找了好久,发现可用的不多,我专门研究了下,分享代码,当前测试点不多,不排除有bug。

test: function(){  
                uni.chooseImage({  
                    count: 1,  
                    sizeType: ['compressed'],   
                    sourceType: ['camera'],  
                    success: async function (res) {  
                        const tempFilePaths = res.tempFilePaths;  

                        let img = '';  
                        /* #ifdef H5 */  
                        img = await this.comprossImage(tempFilePaths[0])  
                        /* #endif */  

                        uni.uploadFile({  
                            url: server + '/....',   
                            filePath: img || tempFilePaths[0],  
                            name: 'file',  
                            success: (uploadFileRes) => {  
                                let json = JSON.parse(uploadFileRes.data);  
                                if(1 ==json.state){  
                                    // 上传成功  
                                }else{  
                                    // 上传失败  
                                }  
                            },  
                            fail: function(err) {  
                                //其它错误  
                            }  
                        });  
                    }  
                });  
            },  
            comprossImage: async function(imgSrc,maxWidth) {  
                if(!imgSrc) return 0;  
                return new Promise((resolve, reject) => {  
                    maxWidth = maxWidth || 1024;/*默认压缩成1024宽*/  
                    uni.getImageInfo({    
                        src: imgSrc,    
                        success(res) {  
                            if(res.width <= maxWidth){/*太小的图片就不压缩了*/  
                                resolve(imgSrc);  
                                return;  
                            }  
                    let img = new Image();    
                    img.src = res.path;    

                     let canvas = document.createElement('canvas');    
                    let scale = res.width / res.height;  

                    let ctx = canvas.getContext('2d');  
                    canvas.width = maxWidth;  
                    canvas.height = maxWidth / scale;  
                    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);  

                    /* 默认图片质量为0.7 */  
                    var quality = 0.7;  
                    /* 回调函数返回base64的值 */  
                    var base64 = canvas.toDataURL('image/jpeg', quality);  

                            resolve(base64);    
                        }    
                    });    
                })    
            },
继续阅读 »

最近把app转成h5后,发现图片不能自动压缩。现在手机像素高,拍照都是5m左右的,这样的图片上传速度极慢。在社区里找了好久,发现可用的不多,我专门研究了下,分享代码,当前测试点不多,不排除有bug。

test: function(){  
                uni.chooseImage({  
                    count: 1,  
                    sizeType: ['compressed'],   
                    sourceType: ['camera'],  
                    success: async function (res) {  
                        const tempFilePaths = res.tempFilePaths;  

                        let img = '';  
                        /* #ifdef H5 */  
                        img = await this.comprossImage(tempFilePaths[0])  
                        /* #endif */  

                        uni.uploadFile({  
                            url: server + '/....',   
                            filePath: img || tempFilePaths[0],  
                            name: 'file',  
                            success: (uploadFileRes) => {  
                                let json = JSON.parse(uploadFileRes.data);  
                                if(1 ==json.state){  
                                    // 上传成功  
                                }else{  
                                    // 上传失败  
                                }  
                            },  
                            fail: function(err) {  
                                //其它错误  
                            }  
                        });  
                    }  
                });  
            },  
            comprossImage: async function(imgSrc,maxWidth) {  
                if(!imgSrc) return 0;  
                return new Promise((resolve, reject) => {  
                    maxWidth = maxWidth || 1024;/*默认压缩成1024宽*/  
                    uni.getImageInfo({    
                        src: imgSrc,    
                        success(res) {  
                            if(res.width <= maxWidth){/*太小的图片就不压缩了*/  
                                resolve(imgSrc);  
                                return;  
                            }  
                    let img = new Image();    
                    img.src = res.path;    

                     let canvas = document.createElement('canvas');    
                    let scale = res.width / res.height;  

                    let ctx = canvas.getContext('2d');  
                    canvas.width = maxWidth;  
                    canvas.height = maxWidth / scale;  
                    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);  

                    /* 默认图片质量为0.7 */  
                    var quality = 0.7;  
                    /* 回调函数返回base64的值 */  
                    var base64 = canvas.toDataURL('image/jpeg', quality);  

                            resolve(base64);    
                        }    
                    });    
                })    
            },
收起阅读 »

UniPush支持谷歌推送FCM配置指南

fcm unipush

HBuilderX2.7.10+ 版本UniPush支持FCM

概述

在海外网络环境下,部分网络在连接UniPush技术支持供应商个推的推送服务时,可能出现不稳定的情况。此时,开发者可以接入 FCM 辅助通道,当在个推服务断线的情况下,通过谷歌的 FCM 推送通道下发消息,提升推送到达率。

使用FCM时手机端需安装Google移动服务(GMS),并且可以正常连接Google服务(国内网络需要翻墙)

使用FCM必须先开通使用UniPush:

从谷歌后台申请key信息

进入 Firebase官网创建项目,获取google-services.json文件及Server key。

登录google账号,如果没有账号请先注册

登录后点击右上角的“Go to console”

打开项目列表页面,点击“Add project”创建项目

输入项目名称(根据自己应用取名),点击“Continue”

确认是否需要使用Google Analytics服务(根据自己需要开启或关闭),点击“Continue”

确认后创建项目,点击“Continue”

进入项目详情页面,点击“Android”图标添加Android应用

输入Android应用信息(包名、昵称、证书SHA-1),点击“Register App”

注册Android应用后下载配置文件“google-services.json”,保存google-services.json文件后面需要使用
点击“Next”继续

此步骤中的操作云端打包机已经处理,忽略提示信息,继续点击“Next”,进入下一步
完成注册Android应用,点击“Continue to console”回到项目详情页面

点击“Project settings”,进入项目设置页面

切换到“Cloud Messaging”项,获取“Server key”,保存Server key后面需要使用

由于新版Firebase Cloud Messaging API (V1)不提供Server key, 所以需要手动开启旧版 Cloud Messaging API

跳转到Api管理页面启动Cloud Messaging API

启动Cloud Messaging API后即可得到Server key

UniPush后台配置FCM参数

配置FCM需先开通UniPush,如应用未开通UniPush请先开通。
在HBuilderX的mainfest.json页面,在“App SDK配置”项下的“uniPush”栏点击“配置”

打开DCloud的开发者中心后台进入应用列表,点击应用名称进入详情,点击上方“uniPush”选项卡,点击“厂商推送设置”按钮进入配置UniPush的FCM参数

保存成功后在HBuilderX中重新提交云端打包,并在“App-云打包”界面选择google play 渠道包:

如果你已经完成了uniPush的代码开发,只需完成上述配置和打包即可,不用修改代码。

如果你还没有开发过推送代码,参考App端使用UniPush参考:https://ask.dcloud.net.cn/article/35622

本地离线打包

Android平台离线sdk集成UniPush支持FCM可参考:Push(消息推送)

注意事项

FCM 离线消息仅支持GOOGLE 推送,暂不支持国内设备商的海外发行版本

继续阅读 »

HBuilderX2.7.10+ 版本UniPush支持FCM

概述

在海外网络环境下,部分网络在连接UniPush技术支持供应商个推的推送服务时,可能出现不稳定的情况。此时,开发者可以接入 FCM 辅助通道,当在个推服务断线的情况下,通过谷歌的 FCM 推送通道下发消息,提升推送到达率。

使用FCM时手机端需安装Google移动服务(GMS),并且可以正常连接Google服务(国内网络需要翻墙)

使用FCM必须先开通使用UniPush:

从谷歌后台申请key信息

进入 Firebase官网创建项目,获取google-services.json文件及Server key。

登录google账号,如果没有账号请先注册

登录后点击右上角的“Go to console”

打开项目列表页面,点击“Add project”创建项目

输入项目名称(根据自己应用取名),点击“Continue”

确认是否需要使用Google Analytics服务(根据自己需要开启或关闭),点击“Continue”

确认后创建项目,点击“Continue”

进入项目详情页面,点击“Android”图标添加Android应用

输入Android应用信息(包名、昵称、证书SHA-1),点击“Register App”

注册Android应用后下载配置文件“google-services.json”,保存google-services.json文件后面需要使用
点击“Next”继续

此步骤中的操作云端打包机已经处理,忽略提示信息,继续点击“Next”,进入下一步
完成注册Android应用,点击“Continue to console”回到项目详情页面

点击“Project settings”,进入项目设置页面

切换到“Cloud Messaging”项,获取“Server key”,保存Server key后面需要使用

由于新版Firebase Cloud Messaging API (V1)不提供Server key, 所以需要手动开启旧版 Cloud Messaging API

跳转到Api管理页面启动Cloud Messaging API

启动Cloud Messaging API后即可得到Server key

UniPush后台配置FCM参数

配置FCM需先开通UniPush,如应用未开通UniPush请先开通。
在HBuilderX的mainfest.json页面,在“App SDK配置”项下的“uniPush”栏点击“配置”

打开DCloud的开发者中心后台进入应用列表,点击应用名称进入详情,点击上方“uniPush”选项卡,点击“厂商推送设置”按钮进入配置UniPush的FCM参数

保存成功后在HBuilderX中重新提交云端打包,并在“App-云打包”界面选择google play 渠道包:

如果你已经完成了uniPush的代码开发,只需完成上述配置和打包即可,不用修改代码。

如果你还没有开发过推送代码,参考App端使用UniPush参考:https://ask.dcloud.net.cn/article/35622

本地离线打包

Android平台离线sdk集成UniPush支持FCM可参考:Push(消息推送)

注意事项

FCM 离线消息仅支持GOOGLE 推送,暂不支持国内设备商的海外发行版本

收起阅读 »

nvue使用uni-app编译模式引入字体文件

经验分享 引入字体
        created(){  
            const domModule = weex.requireModule('dom')  
            domModule.addRule('fontFace', {  
                'fontFamily': "iconfont",  
                'src': "url('../../static/font/font.ttf')"  
            });  
        }

在css中加入如下样式

.iconfont {  
    font-family: iconfont;  
}

使用方法

<text class="iconfont">&#xe62c;</text>
继续阅读 »
        created(){  
            const domModule = weex.requireModule('dom')  
            domModule.addRule('fontFace', {  
                'fontFamily': "iconfont",  
                'src': "url('../../static/font/font.ttf')"  
            });  
        }

在css中加入如下样式

.iconfont {  
    font-family: iconfont;  
}

使用方法

<text class="iconfont">&#xe62c;</text>
收起阅读 »

HBX Android真机不能运行

安卓真机运行第一次正常,之后真机不能运行

可能是文件相关的问题,就去找manifest.json相关配置,找到一个文件系统相关的权限

关掉之后一切正常
很迷
也不知道为啥
求解答

继续阅读 »

安卓真机运行第一次正常,之后真机不能运行

可能是文件相关的问题,就去找manifest.json相关配置,找到一个文件系统相关的权限

关掉之后一切正常
很迷
也不知道为啥
求解答

收起阅读 »

用MUI做的影视APP对接苹果CMS

用的技术是mui、H5+、jQuery,数据是对接苹果cms,用户后台是springboot、利用web-view进行视频播放
功能介绍:运营模式(免费、免费需登录、收费)、邀请下级双方获取会员、多条视频解析、播放记录,搜索、分享、意见反馈等功能

用的技术是mui、H5+、jQuery,数据是对接苹果cms,用户后台是springboot、利用web-view进行视频播放
功能介绍:运营模式(免费、免费需登录、收费)、邀请下级双方获取会员、多条视频解析、播放记录,搜索、分享、意见反馈等功能

overrideUrlLoading 拦截web-view打开APP match

wv.overrideUrlLoading({mode:'reject',match:'tbopen://.*'}, function(e){
console.log('reject url: '+e.url);
});

wv.overrideUrlLoading({mode:'reject',match:'tbopen://.*'}, function(e){
console.log('reject url: '+e.url);
});

微擎项目适配转换uni-app项目私活经验分享

小程序转uni_app 微信小程序 uniapp

> 1. 微擎项目在市场上广受欢迎,功能丰富,因此很多人想要将其转化为uni-app项目,以实现多平台运行的能力。
> 2. 在转换过程中,我们确实遇到了不少挑战,但得益于uni-app平台强大的基础能力支持,我们最终都成功解决了这些问题。
> 3. 下面我将分享我们在适配转换过程中的一些思路和经验,希望能对大家有所帮助。

代码结构迁移步骤

  • 我们以适配一个名称为“type”的页面,进行全面讲解
  • 微信小程序页面:type.js type.json type.wxss type.wxml
  • uniapp页面:只需要新建一个页面type.vue,目录层级和小程序保持一致即可。新建页面后,页面中会有三部分template,script,style,系统会自动生成这三部分。
  • 页面映射关系如下
  • 页面迁移结束后,就是进行标签的替换了,小程序的一些标签在uni-app是不识别的,但是整体还是比较简单的,参照下面的表格进行替换就可以了
  • 按照上面的标签替换方案替换完成后,页面基本上就可以进行展示了,再进行页面细节的调试,一个页面基本上就可以出来了,大概平均调试一个页面30分钟左右(根据页面复杂程度定)

迁移过程中遇到的一些“坑”,一起共勉

  • 取页面data值时由“this.data” 改成 “this._data”(备注:具体原因未知,期望知道的大佬讲解下,不胜感激,当初排查这个问题足足花费了3天左右的时间才定位到这个问题)
  • uniapp要求所有data变量提前定义,而微信小程序没有此要求,这块容易出问题。

关于我们

经典文章分享

继续阅读 »

> 1. 微擎项目在市场上广受欢迎,功能丰富,因此很多人想要将其转化为uni-app项目,以实现多平台运行的能力。
> 2. 在转换过程中,我们确实遇到了不少挑战,但得益于uni-app平台强大的基础能力支持,我们最终都成功解决了这些问题。
> 3. 下面我将分享我们在适配转换过程中的一些思路和经验,希望能对大家有所帮助。

代码结构迁移步骤

  • 我们以适配一个名称为“type”的页面,进行全面讲解
  • 微信小程序页面:type.js type.json type.wxss type.wxml
  • uniapp页面:只需要新建一个页面type.vue,目录层级和小程序保持一致即可。新建页面后,页面中会有三部分template,script,style,系统会自动生成这三部分。
  • 页面映射关系如下
  • 页面迁移结束后,就是进行标签的替换了,小程序的一些标签在uni-app是不识别的,但是整体还是比较简单的,参照下面的表格进行替换就可以了
  • 按照上面的标签替换方案替换完成后,页面基本上就可以进行展示了,再进行页面细节的调试,一个页面基本上就可以出来了,大概平均调试一个页面30分钟左右(根据页面复杂程度定)

迁移过程中遇到的一些“坑”,一起共勉

  • 取页面data值时由“this.data” 改成 “this._data”(备注:具体原因未知,期望知道的大佬讲解下,不胜感激,当初排查这个问题足足花费了3天左右的时间才定位到这个问题)
  • uniapp要求所有data变量提前定义,而微信小程序没有此要求,这块容易出问题。

关于我们

经典文章分享

收起阅读 »

写了一个天气类的程序

用uniapp写了一个小程序,新手请大家指教。

用uniapp写了一个小程序,新手请大家指教。

有偿求打离线包 Wap2App 形式开发的。群号:47323557

有偿求打离线包 Wap2App 形式开发的 。

请加QQ群内说需求:47323557

有偿求打离线包 Wap2App 形式开发的 。

请加QQ群内说需求:47323557

分享一下自己写uniapp对接苹果cms的项目历程

uniapp

之前一直用mui写项目
自从uniapp除了以后一直没用过,这次第一次尝试用uniapp写项目,开发过程意外的轻松,而且还包含了weex原生渲染很强大
目前项目完成了98%左右,代码也有待精简和优化,我不分享源码只交流心得,所以伸手党自重
感谢dcloud
感谢ColorUI-UniApp
感谢极简登录注册模板
感谢DLNA投屏,支持IOS和安卓
感谢酷站ui设计师囡囡的楠
下面是演示图

剩下的基本是用户逻辑功能和杂七杂八的页面
最主要的要是下载缓存视频的功能暂且没有思路

继续阅读 »

之前一直用mui写项目
自从uniapp除了以后一直没用过,这次第一次尝试用uniapp写项目,开发过程意外的轻松,而且还包含了weex原生渲染很强大
目前项目完成了98%左右,代码也有待精简和优化,我不分享源码只交流心得,所以伸手党自重
感谢dcloud
感谢ColorUI-UniApp
感谢极简登录注册模板
感谢DLNA投屏,支持IOS和安卓
感谢酷站ui设计师囡囡的楠
下面是演示图

剩下的基本是用户逻辑功能和杂七杂八的页面
最主要的要是下载缓存视频的功能暂且没有思路

收起阅读 »

京东也出小程序了该跟上节奏了

京东小程序

京东也出小程序了,又要跟一波了吧

京东也出小程序了,又要跟一波了吧

电影视频app7.0案例展示分享

播放器

7.2今天发布了,顺便晒晒作品,其实uniapp还是很强大的
有兴趣可以来群里交流 扣扣群 343440607.

继续阅读 »

7.2今天发布了,顺便晒晒作品,其实uniapp还是很强大的
有兴趣可以来群里交流 扣扣群 343440607.

收起阅读 »