HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

图片旋转

            uni.getImageInfo({   //获取图片信息  
                src: url,  
                success: function(image) {  
                    const orientation = image.orientation;  
                    uni.showToast({  
                        title: image.orientation,  
                        icon: 'none'  
                    })  
                    switch (orientation) {  
                        case 'up': //exif:1 不旋转    
                            rotate = 0;  
                            break;  
                        case 'down': //exif:3 旋转180度    
                            rotate = 180;  
                            break;  
                        case 'right': //exif:6 旋转90度    
                            rotate = 90;  
                            break;  
                        case 'left': //exif:8 旋转270度    
                            rotate = 270;  
                            break;  
                        default:  
                            rotate = 0;  
                            break;  
                    }  
                    if (rotate == 0) {  
                        console.log('up', url);  
                        plus.zip.compressImage({  
                                src: url, //src: (String 类型 )压缩转换原始图片的路径      
                                dst: name, //压缩转换目标图片的路径      
                                quality: 20, //quality: (Number 类型 )压缩图片的质量.取值范围为1-100      
                                overwrite: true, //overwrite: (Boolean 类型 )覆盖生成新文件11  
                            },  
                            function(zip) {  
                                //页面显示图片    
                                console.log(4, zip.target)  
                                console.log(4, name)  
                                that.showPics(zip.target, name);  
                            },  
                            function(error) {  
                                plus.nativeUI.toast("压缩图片失败,请稍候再试");  
                            });  
                    } else {  
                        plus.zip.compressImage({  
                                src: url, //src: (String 类型 )压缩转换原始图片的路径      
                                dst: name, //压缩转换目标图片的路径      
                                quality: 20, //quality: (Number 类型 )压缩图片的质量.取值范围为1-100      
                                overwrite: true, //overwrite: (Boolean 类型 )覆盖生成新文件11  
                                rotate: rotate,  
                            },  
                            function(zip) {  
                                //页面显示图片    
                                console.log(4, zip.target)  
                                console.log(4, name)  
                                that.showPics(zip.target, name);  
                            },  
                            function(error) {  
                                plus.nativeUI.toast("压缩图片失败,请稍候再试");  
                            });  
                    }  
                }  
            });
继续阅读 »
            uni.getImageInfo({   //获取图片信息  
                src: url,  
                success: function(image) {  
                    const orientation = image.orientation;  
                    uni.showToast({  
                        title: image.orientation,  
                        icon: 'none'  
                    })  
                    switch (orientation) {  
                        case 'up': //exif:1 不旋转    
                            rotate = 0;  
                            break;  
                        case 'down': //exif:3 旋转180度    
                            rotate = 180;  
                            break;  
                        case 'right': //exif:6 旋转90度    
                            rotate = 90;  
                            break;  
                        case 'left': //exif:8 旋转270度    
                            rotate = 270;  
                            break;  
                        default:  
                            rotate = 0;  
                            break;  
                    }  
                    if (rotate == 0) {  
                        console.log('up', url);  
                        plus.zip.compressImage({  
                                src: url, //src: (String 类型 )压缩转换原始图片的路径      
                                dst: name, //压缩转换目标图片的路径      
                                quality: 20, //quality: (Number 类型 )压缩图片的质量.取值范围为1-100      
                                overwrite: true, //overwrite: (Boolean 类型 )覆盖生成新文件11  
                            },  
                            function(zip) {  
                                //页面显示图片    
                                console.log(4, zip.target)  
                                console.log(4, name)  
                                that.showPics(zip.target, name);  
                            },  
                            function(error) {  
                                plus.nativeUI.toast("压缩图片失败,请稍候再试");  
                            });  
                    } else {  
                        plus.zip.compressImage({  
                                src: url, //src: (String 类型 )压缩转换原始图片的路径      
                                dst: name, //压缩转换目标图片的路径      
                                quality: 20, //quality: (Number 类型 )压缩图片的质量.取值范围为1-100      
                                overwrite: true, //overwrite: (Boolean 类型 )覆盖生成新文件11  
                                rotate: rotate,  
                            },  
                            function(zip) {  
                                //页面显示图片    
                                console.log(4, zip.target)  
                                console.log(4, name)  
                                that.showPics(zip.target, name);  
                            },  
                            function(error) {  
                                plus.nativeUI.toast("压缩图片失败,请稍候再试");  
                            });  
                    }  
                }  
            });
收起阅读 »

个人开发者承接uni-app项目外包,网站、小程序、APP都可以接

weex uniapp 外包接单 小程序 外包

个人开发者接单哦~实力派,质量有保障,价格合理

商城类、社交类、按摩类、即时通讯、哈喽麻豆/集美麻豆(买家秀任务平台)类、音乐类 度有作品可看哦,绝对真实从我这里开发出去的项目

擅长 uniapp WeexNvuePhpHTMLVueelement

除了大游戏,脚本,外挂,其他的度可以开发哦~~

有线上成品作品可看

有需求的老板可联系我

**微信:wu1020yt

QQ:6864952**

同行大哥们就别再下面打广告了,给小弟留条活路

继续阅读 »

个人开发者接单哦~实力派,质量有保障,价格合理

商城类、社交类、按摩类、即时通讯、哈喽麻豆/集美麻豆(买家秀任务平台)类、音乐类 度有作品可看哦,绝对真实从我这里开发出去的项目

擅长 uniapp WeexNvuePhpHTMLVueelement

除了大游戏,脚本,外挂,其他的度可以开发哦~~

有线上成品作品可看

有需求的老板可联系我

**微信:wu1020yt

QQ:6864952**

同行大哥们就别再下面打广告了,给小弟留条活路

收起阅读 »

【分享】云函数解析抖音开放平台 用户手机号示例

技术分享

解密抖音用户手机号/字节跳动小程序ACE解密示例
需要引入 crypto; // nodejs 自带包直接使用
亲测可用

 let encryptedMobile = 获得的加密手机号;  
 let keyStr = 你的client_secret;  

 const algorithm = 'aes-256-cbc';  
 const ivStr = keyStr.substr(0, 16);  
 const keyByte = Buffer.from(keyStr)  
 const ivByte = Buffer.from(ivStr)  
 const encryptedText = Buffer.from(encryptedMobile,"base64")  

 try {  
     const decipher = crypto.createDecipheriv('aes-256-cbc', keyByte, ivByte)  
     decipher.setAutoPadding(true);  
     var phone_info = decipher.update(encryptedText, 'binary', 'utf8');  
     phone_info += decipher.final('utf8');  
 }catch(err){  
     console.log('err: ', err)  
}  
console.log('phone_info: ', phone_info)
继续阅读 »

解密抖音用户手机号/字节跳动小程序ACE解密示例
需要引入 crypto; // nodejs 自带包直接使用
亲测可用

 let encryptedMobile = 获得的加密手机号;  
 let keyStr = 你的client_secret;  

 const algorithm = 'aes-256-cbc';  
 const ivStr = keyStr.substr(0, 16);  
 const keyByte = Buffer.from(keyStr)  
 const ivByte = Buffer.from(ivStr)  
 const encryptedText = Buffer.from(encryptedMobile,"base64")  

 try {  
     const decipher = crypto.createDecipheriv('aes-256-cbc', keyByte, ivByte)  
     decipher.setAutoPadding(true);  
     var phone_info = decipher.update(encryptedText, 'binary', 'utf8');  
     phone_info += decipher.final('utf8');  
 }catch(err){  
     console.log('err: ', err)  
}  
console.log('phone_info: ', phone_info)
收起阅读 »

【分享】云函数调用抖音API,分享视频

技术分享

引用:https://blog.csdn.net/nanfudianchi/article/details/118146659 看本文档了解详情
云函数调用 oss -》上传抖音 /video/upload

实测可用

const client = new OSS({}); //你的OSS  
const result = await client.get(videoUrl);//获取到二进制数据  

const form = new FormData();  
form.append('video', result.content, { // 为方便演示此处直接使用云函数目录下的test.jpg文件  
         filename: filename,  
     contentType: 'video/mp4'  
});  

const videoInfo = await uniCloud.httpclient.request(  
`https://open.douyin.com/video/upload/?open_id=${openid}`,   
{  
    method: 'POST',  
    content: form.getBuffer(), // 请求内容  
    headers: {   
        ...form.getHeaders(),  
        'access-token':access_token,  
        'Content-Disposition':'form-data; name="video"; ; filename="'+ filename +'"'  
    }, // 请求头  
    dataType: 'json' // 此处指定为json表示将此请求的返回值解析为json  
});  
继续阅读 »

引用:https://blog.csdn.net/nanfudianchi/article/details/118146659 看本文档了解详情
云函数调用 oss -》上传抖音 /video/upload

实测可用

const client = new OSS({}); //你的OSS  
const result = await client.get(videoUrl);//获取到二进制数据  

const form = new FormData();  
form.append('video', result.content, { // 为方便演示此处直接使用云函数目录下的test.jpg文件  
         filename: filename,  
     contentType: 'video/mp4'  
});  

const videoInfo = await uniCloud.httpclient.request(  
`https://open.douyin.com/video/upload/?open_id=${openid}`,   
{  
    method: 'POST',  
    content: form.getBuffer(), // 请求内容  
    headers: {   
        ...form.getHeaders(),  
        'access-token':access_token,  
        'Content-Disposition':'form-data; name="video"; ; filename="'+ filename +'"'  
    }, // 请求头  
    dataType: 'json' // 此处指定为json表示将此请求的返回值解析为json  
});  
收起阅读 »

【uniapp】解决uni.previewImage图片模糊问题

previewimage


问题简述:以前开发时也碰到查看大图就模糊的问题,查阅资料知道是css3的3d渲染导致图片模糊,但由于uni.previewImage是uniapp内置组件,不能修改,所以就一直放着在,今天做项目又用到了uni.previewImage,经过苦思冥想想到一个折中的办法来解决,那就是mixin,且只需两步就能解决,灰常nice!

解决步骤:

1、新建一个mixin.js, 复制下面代码到里面:

function v(a, b) {  
    return +((1000 * a - 1000 * b) / 1000).toFixed(1)  
}  
module.exports = {  
    created() {  
        if (this._setTransform) {  
            this._setTransform = (x, y, scale, source = '', r, o) => {  
                if (!(x !== null && x.toString() !== 'NaN' && typeof x === 'number')) {  
                    x = this._translateX || 0  
                }  
                if (!(y !== null && y.toString() !== 'NaN' && typeof y === 'number')) {  
                    y = this._translateY || 0  
                }  
                x = Number(x.toFixed(1))  
                y = Number(y.toFixed(1))  
                scale = Number(scale.toFixed(1))  
                if (!(this._translateX === x && this._translateY === y)) {  
                    if (!r) {  
                        this.$trigger('change', {}, {  
                            x: v(x, this._scaleOffset.x),  
                            y: v(y, this._scaleOffset.y),  
                            source: source  
                        })  
                    }  
                }  
                if (!this.scale) {  
                    scale = this._scale  
                }  
                scale = this._adjustScale(scale)  
                scale = +scale.toFixed(3)  
                if (o && scale !== this._scale) {  
                    this.$trigger('scale', {}, {  
                        x: x,  
                        y: y,  
                        scale: scale  
                    })  
                }  
                var transform = 'translateX(' + x + 'px) translateY(' + y + 'px) scale(' + scale + ')'  
                this.$el.style.transform = transform  
                this.$el.style.webkitTransform = transform  
                this._translateX = x  
                this._translateY = y  
                this._scale = scale  
            }  
        }  
    },  
    destroyed() {  
        //解决预览模式关闭后,和重复开关预览模式this._setTransform函数无限次执行导致手机卡顿的问题  
        if (this._FA) {  
            this._FA.cancel()  
        }  
        if (this._SFA) {  
            this._SFA.cancel()  
        }  
    },  
    methods: {  
    }  
}

2、在main.js里面导入你刚刚创建的mixin.js,并执行全局混入操作:

// main.js  
import Vue from 'vue';  
import App from './App';  

//...省略的代码  

import mixin from '@/mixin/mixin.js'  
Vue.mixin(mixin);  

//...省略的代码

完结,问题解决,O(∩_∩)O!

适用环境:已测试的环境:h5端没问题,其他端我没测试过,有空的小伙伴可以测试了回来反馈一下。

仍存在的问题:

         1、双指缩放完毕后图片仍然模糊,但只要单指轻微移动一下就会变成清晰的了;

         2、当图片未放大时,左右拖动图片接触边界回弹时会导致【this._setTransform】方法会被无限次执行,在下一次执行移动和缩放时才会停止,但不影响正常使用。(不清楚是不是官方代码的bug还是我修改后产生的bug,不过既然清晰度问题已经解决,就懒得管了)

         3、就算退出预览模式【this._setTransform】方法还是会在后台无限次执行,如果重复开关预览模式还会导致手机越来越卡;(不清楚这个问题是不是官方代码存在的问题,我暂时解决的方法是执行destroyed里面的方法)

继续阅读 »


问题简述:以前开发时也碰到查看大图就模糊的问题,查阅资料知道是css3的3d渲染导致图片模糊,但由于uni.previewImage是uniapp内置组件,不能修改,所以就一直放着在,今天做项目又用到了uni.previewImage,经过苦思冥想想到一个折中的办法来解决,那就是mixin,且只需两步就能解决,灰常nice!

解决步骤:

1、新建一个mixin.js, 复制下面代码到里面:

function v(a, b) {  
    return +((1000 * a - 1000 * b) / 1000).toFixed(1)  
}  
module.exports = {  
    created() {  
        if (this._setTransform) {  
            this._setTransform = (x, y, scale, source = '', r, o) => {  
                if (!(x !== null && x.toString() !== 'NaN' && typeof x === 'number')) {  
                    x = this._translateX || 0  
                }  
                if (!(y !== null && y.toString() !== 'NaN' && typeof y === 'number')) {  
                    y = this._translateY || 0  
                }  
                x = Number(x.toFixed(1))  
                y = Number(y.toFixed(1))  
                scale = Number(scale.toFixed(1))  
                if (!(this._translateX === x && this._translateY === y)) {  
                    if (!r) {  
                        this.$trigger('change', {}, {  
                            x: v(x, this._scaleOffset.x),  
                            y: v(y, this._scaleOffset.y),  
                            source: source  
                        })  
                    }  
                }  
                if (!this.scale) {  
                    scale = this._scale  
                }  
                scale = this._adjustScale(scale)  
                scale = +scale.toFixed(3)  
                if (o && scale !== this._scale) {  
                    this.$trigger('scale', {}, {  
                        x: x,  
                        y: y,  
                        scale: scale  
                    })  
                }  
                var transform = 'translateX(' + x + 'px) translateY(' + y + 'px) scale(' + scale + ')'  
                this.$el.style.transform = transform  
                this.$el.style.webkitTransform = transform  
                this._translateX = x  
                this._translateY = y  
                this._scale = scale  
            }  
        }  
    },  
    destroyed() {  
        //解决预览模式关闭后,和重复开关预览模式this._setTransform函数无限次执行导致手机卡顿的问题  
        if (this._FA) {  
            this._FA.cancel()  
        }  
        if (this._SFA) {  
            this._SFA.cancel()  
        }  
    },  
    methods: {  
    }  
}

2、在main.js里面导入你刚刚创建的mixin.js,并执行全局混入操作:

// main.js  
import Vue from 'vue';  
import App from './App';  

//...省略的代码  

import mixin from '@/mixin/mixin.js'  
Vue.mixin(mixin);  

//...省略的代码

完结,问题解决,O(∩_∩)O!

适用环境:已测试的环境:h5端没问题,其他端我没测试过,有空的小伙伴可以测试了回来反馈一下。

仍存在的问题:

         1、双指缩放完毕后图片仍然模糊,但只要单指轻微移动一下就会变成清晰的了;

         2、当图片未放大时,左右拖动图片接触边界回弹时会导致【this._setTransform】方法会被无限次执行,在下一次执行移动和缩放时才会停止,但不影响正常使用。(不清楚是不是官方代码的bug还是我修改后产生的bug,不过既然清晰度问题已经解决,就懒得管了)

         3、就算退出预览模式【this._setTransform】方法还是会在后台无限次执行,如果重复开关预览模式还会导致手机越来越卡;(不清楚这个问题是不是官方代码存在的问题,我暂时解决的方法是执行destroyed里面的方法)

收起阅读 »

App真机模块一直处于下载中

HBuilder X 3.4.18.20220630 在打andriod 包过程中,提示让下载App真机模块,然后就一直处于下载中
至少有4个小时没有下载下来了

HBuilder X 3.4.18.20220630 在打andriod 包过程中,提示让下载App真机模块,然后就一直处于下载中
至少有4个小时没有下载下来了

一个UNIAPP开发者如何赚到钱

赚钱,人人都梦寐以求,但不是人人都得偿所愿。很多人费了很大力气,最后一无所获,除了挫败,失落,伤心,焦虑。相信uniapp的开发者,花费时间精力做一个app或者小程序,目的肯定是为了赚钱,至少也是积累项目经验,锻炼自己的能力。锻炼开发能力的不再今天的讨论范围之内。作为一个坚持了两年,uniapp自主开发运营的独立开发者,从项目创意立项,需求分析,建立模型,画草图,到最后变成品,从服务器运维,前后端开发,市场营销推广--发软文,投广告。以及收集各种反馈,判断成败得失。每一个环节都亲自操刀上阵的实践者。来跟大家分享一下,酸甜苦辣,利弊得失。写得不太好,或者太啰嗦,请诸位见谅。

我最近的一个项目叫做,少年儿童习惯养成。发布了安卓app和微信小程序。已经上线。

为什么会做这个项目呢?因为我是两个孩子的父亲,如何跟孩子打交道,给他们培养良好的行为习惯,是我的刚性需求。特别是孩子很叛逆的时候。所以整个项目的创意立项,是自然而然完成的。我经常要给孩子检查作业,修正他们生活中的不良习惯,诸如,拖延,爱发脾气,不讲卫生,沉溺手机游戏和电视垃圾短视频。而我在上班,确定了很多规则,但是时间一长,往往就忘掉了。这是一个危险的信号,孩子发现爸爸妈妈,记性不太好呃,他们自己定的规则都会忘记,这会给他们造成一种印象,不必太在意规则,他们太忙,他们会忘记的。久而久之,不仅没有塑造好习惯,甚至会滋生他们的侥幸和漠视父母的权威。这是一个危险的信号。许多新手父母,也许认识不到这一点:权威的陨落,就是失控的开始。这里废了这么多话,其实我想说的是,一个项目能不能赚钱,它提供了什么价值是很重要的。它是刚需吗?消费者会认可吗?他们愿意为此掏钱吗?他们每天都会使用吗?他们会有更好的选择吗?开始做一个项目之前,不妨多问问,多想想,它值得做吗?它真值得做吗?这个问题想透,想明白,然后才开始后边的。否则绝对赚不到钱。只会浪费时间。在正确的做事,和做正确的事情之间,此时的重点就是要做正确的事。

连载分享,未完待续。

继续阅读 »

赚钱,人人都梦寐以求,但不是人人都得偿所愿。很多人费了很大力气,最后一无所获,除了挫败,失落,伤心,焦虑。相信uniapp的开发者,花费时间精力做一个app或者小程序,目的肯定是为了赚钱,至少也是积累项目经验,锻炼自己的能力。锻炼开发能力的不再今天的讨论范围之内。作为一个坚持了两年,uniapp自主开发运营的独立开发者,从项目创意立项,需求分析,建立模型,画草图,到最后变成品,从服务器运维,前后端开发,市场营销推广--发软文,投广告。以及收集各种反馈,判断成败得失。每一个环节都亲自操刀上阵的实践者。来跟大家分享一下,酸甜苦辣,利弊得失。写得不太好,或者太啰嗦,请诸位见谅。

我最近的一个项目叫做,少年儿童习惯养成。发布了安卓app和微信小程序。已经上线。

为什么会做这个项目呢?因为我是两个孩子的父亲,如何跟孩子打交道,给他们培养良好的行为习惯,是我的刚性需求。特别是孩子很叛逆的时候。所以整个项目的创意立项,是自然而然完成的。我经常要给孩子检查作业,修正他们生活中的不良习惯,诸如,拖延,爱发脾气,不讲卫生,沉溺手机游戏和电视垃圾短视频。而我在上班,确定了很多规则,但是时间一长,往往就忘掉了。这是一个危险的信号,孩子发现爸爸妈妈,记性不太好呃,他们自己定的规则都会忘记,这会给他们造成一种印象,不必太在意规则,他们太忙,他们会忘记的。久而久之,不仅没有塑造好习惯,甚至会滋生他们的侥幸和漠视父母的权威。这是一个危险的信号。许多新手父母,也许认识不到这一点:权威的陨落,就是失控的开始。这里废了这么多话,其实我想说的是,一个项目能不能赚钱,它提供了什么价值是很重要的。它是刚需吗?消费者会认可吗?他们愿意为此掏钱吗?他们每天都会使用吗?他们会有更好的选择吗?开始做一个项目之前,不妨多问问,多想想,它值得做吗?它真值得做吗?这个问题想透,想明白,然后才开始后边的。否则绝对赚不到钱。只会浪费时间。在正确的做事,和做正确的事情之间,此时的重点就是要做正确的事。

连载分享,未完待续。

收起阅读 »

uni-app返回上一页终极处理办法

注意:注意针对自定义顶部导航,或者是使用了uni.navigateBack这个方法的界面。

//如果当前界面存在上一个界面,就返回上一个界面

//如果当前界面是分享进入的,没有上一个界面,这样的情况直接返回到指定的界面上去。

back() {  
                /*uni.navigateBack({  
                    delta: 1  
                })*/  
                //@zxyuns 处理兼容,如果没有上一级界面则返回首页  
                const pages = getCurrentPages();  
                if (pages.length === 2) {  
                    uni.navigateBack({  
                        delta: 1  
                    });  
                } else if (pages.length === 1) {  
                    uni.switchTab({  
                        url: '/pages/home/home',  
                    })  
                } else {  
                    uni.navigateBack({  
                        delta: 1  
                    });  
                }  
            },
继续阅读 »

注意:注意针对自定义顶部导航,或者是使用了uni.navigateBack这个方法的界面。

//如果当前界面存在上一个界面,就返回上一个界面

//如果当前界面是分享进入的,没有上一个界面,这样的情况直接返回到指定的界面上去。

back() {  
                /*uni.navigateBack({  
                    delta: 1  
                })*/  
                //@zxyuns 处理兼容,如果没有上一级界面则返回首页  
                const pages = getCurrentPages();  
                if (pages.length === 2) {  
                    uni.navigateBack({  
                        delta: 1  
                    });  
                } else if (pages.length === 1) {  
                    uni.switchTab({  
                        url: '/pages/home/home',  
                    })  
                } else {  
                    uni.navigateBack({  
                        delta: 1  
                    });  
                }  
            },
收起阅读 »

【Redis-lua脚本】踩坑经验分享

uniCloud

Redis

List类型

获取指定下标的元素

// 这里的key应为string类型,index为number类型且下标0对应第一个元素(lua的table下标从1开始)  
redis.call('lindex',key,index)

Lua脚本

1.尽量不要使用while,repeat...until这种条件循环,因为一旦不能退出循环就会直接把redis服务搞崩。慎用!!!

未完待续。。。
文章不定时更新,都是本人实际开发过程中遇到过的坑,分享出来以供参考

继续阅读 »

Redis

List类型

获取指定下标的元素

// 这里的key应为string类型,index为number类型且下标0对应第一个元素(lua的table下标从1开始)  
redis.call('lindex',key,index)

Lua脚本

1.尽量不要使用while,repeat...until这种条件循环,因为一旦不能退出循环就会直接把redis服务搞崩。慎用!!!

未完待续。。。
文章不定时更新,都是本人实际开发过程中遇到过的坑,分享出来以供参考

收起阅读 »

小说APP 自动采集数据成套代码一键安装

新增功能
可以随系统版本语言变换APP语言
目前支持 繁体 简体中文,英语,日语,韩语等

接入了google 广告
介绍
本阅读器牛逼之处在于无需部署服务器,只要自己在我的-规则设置-添加规则就可以实现APP自动抓取目标站数据,转换为可以阅读的小说内容
支持换源模式,一个小说规则挂了,我们换源看
书架支持9宫格和列表模式
安装说明
下载后请删除项目根目录下package.json文件-点击测试
当运行APP后在我的-规则设置-点击“内置测试书源导入”进行导入
如果不懂请加QQ2010409646
阅读器支持4中翻页模式
覆盖
左右平移
上下平移
无动画移动
支持多种行间距模式
最小
较小
适中
较大
最大
超大
支持字号设置
支持简体繁体切换

支持单手模式

背景色彩支持6中切换方式

核心功能支持阅读源切换功能

继续阅读 »

新增功能
可以随系统版本语言变换APP语言
目前支持 繁体 简体中文,英语,日语,韩语等

接入了google 广告
介绍
本阅读器牛逼之处在于无需部署服务器,只要自己在我的-规则设置-添加规则就可以实现APP自动抓取目标站数据,转换为可以阅读的小说内容
支持换源模式,一个小说规则挂了,我们换源看
书架支持9宫格和列表模式
安装说明
下载后请删除项目根目录下package.json文件-点击测试
当运行APP后在我的-规则设置-点击“内置测试书源导入”进行导入
如果不懂请加QQ2010409646
阅读器支持4中翻页模式
覆盖
左右平移
上下平移
无动画移动
支持多种行间距模式
最小
较小
适中
较大
最大
超大
支持字号设置
支持简体繁体切换

支持单手模式

背景色彩支持6中切换方式

核心功能支持阅读源切换功能

收起阅读 »

DCloud 开发者中心升级公告

开发者中心 云服务

为了给广大开发者提供更优质稳定的服务,DCloud 将于2022年7月23日晚上22点对开发者中心(dev.dcloud.net.cn)进行全面升级,升级时间预计为8小时,如遇问题恢复时间可能会顺延。

本次升级由于涉及到系统底层变动(改为uni-admin,前端为uni-app,后端基于uniCloud私有云),升级过程中开发者中心将暂停访问,请各位开发者安排好时间,避免对自己的业务产生影响。

系统升级过程中,除开发者中心外,以下功能也将暂停使用,升级完成后恢复

  • 注册账号、修改密码、找回密码
  • 创建应用、重新生成 Appid
  • 云端证书打包

升级完成后,开发者中心(dev.dcloud.net.cn)将以全新面貌重新开放,届时如有问题也欢迎大家积极反馈。


已登录用户无法退出的问题,请先清除浏览器本地缓存,然后刷新页面重试。

继续阅读 »

为了给广大开发者提供更优质稳定的服务,DCloud 将于2022年7月23日晚上22点对开发者中心(dev.dcloud.net.cn)进行全面升级,升级时间预计为8小时,如遇问题恢复时间可能会顺延。

本次升级由于涉及到系统底层变动(改为uni-admin,前端为uni-app,后端基于uniCloud私有云),升级过程中开发者中心将暂停访问,请各位开发者安排好时间,避免对自己的业务产生影响。

系统升级过程中,除开发者中心外,以下功能也将暂停使用,升级完成后恢复

  • 注册账号、修改密码、找回密码
  • 创建应用、重新生成 Appid
  • 云端证书打包

升级完成后,开发者中心(dev.dcloud.net.cn)将以全新面貌重新开放,届时如有问题也欢迎大家积极反馈。


已登录用户无法退出的问题,请先清除浏览器本地缓存,然后刷新页面重试。

收起阅读 »

邮箱、静默发邮件、系统UI发送邮件、支持文本、html、附件发送

邮箱、静默发邮件、系统UI发送邮件、支持文本、html、附件发送:https://ext.dcloud.net.cn/plugin?id=8839

邮箱、静默发邮件、系统UI发送邮件、支持文本、html、附件发送:https://ext.dcloud.net.cn/plugin?id=8839