- 七牛直传插件(vktool),给你飞的翅膀
为什么要写这样一个插件 中小公司或个人都会把资源文件放到七牛上,小程序在做上传时,都要依赖服务端生成 token; 1. 服务端生成 token 代码都要写一遍 2. 一些七牛的坑或限制也要淌一遍 3. 分块、分片都实现一遍 基于这些原因写了这个小程序插件(vktool),使用云开发生成 token; 这个插件源码开放(https://github.com/myzingy/wx-plugin-oxoo), 不会储存你的ak\sk,如果你不放心,可以直接部署成你的插件; 针对七牛的处理 图片处理(20兆以内) 一般为了加快图片加载,七牛图片都会增加类似 ?imageView2/3/w/980 的缩略图方式,但如果图片很大,超过20兆时,七牛直接就报错了,图片也显示不出来,针对这个问题,生成token 上传策略时,特意另存了一份.lim.jpg 的瘦身文件。 分片上传后的 lim 文件 2.1 分片真是个复杂的事,坑已淌好,这个插件已处理好,你可以直接用; //图片瘦身另存为lim options.persistentOps = ‘imageslim|saveas/$(x:limkey)’,分片上传后一直不生成lim文件,提交了工单,七牛给出了解决方案(七牛技术服务响应很高效),需要做2次urlsafeBase64Encode [图片] 2.2 小程序 FileSystemManager.readFileSync 真机目前只能支持10兆内的文件,超过10兆直接报错,等小程序官方修复吧;目前分片上传只能支持10兆以下文件,意义不大; 即使你不用插件,希望这些坑也能帮到你,毕竟源码都给你了 案例 [图片] 自己写了个小程序 图略,新建活动或发布照片都可以体验七牛直传;
2020-04-23 - 小程序后台运行时关闭webview页面中的音乐
之前在做小程序的时候遇到一个问题:小程序中有一个webview页面,这个页面中用iframe嵌套了一个H5页面,这个H5页面中有背景音乐,背景音乐播放的情况下,点击小程序右上角退出的小圆圈背景音乐仍然播放。 预期效果:点击小程序退出后背景音乐停止播放,再次打开小程序后背景音乐继续播放,如果用户停止了音乐,退出再次打开时背景音乐仍然是停止状态 思路过程:因为H5页面是嵌套的,音乐在H5页面中,无法通过小程序的生命周期去控制音乐的播放状态,所以如何能在H5页面中监听页面的显隐藏状态去控制音乐 [代码]visibilitychange[代码]:浏览器标签页被隐藏或显示的时候会触发 适用场景: 浏览器标签页切换时触发 微信环境下切成浮窗状态触发 小程序嵌套页面,小程序切换页面或进入后台触发 其他页面显隐切换时触发 解决方案: [代码]let statusBeforeHide = true; // 记录页面切换到后台时音乐的播放状态,如果用户进行了音乐关闭操作,则将该状态置为false // document.hidden boolean 页面当前是否不可见 let hiddenProperty = ('hidden' in document) ? 'hidden' : ('webkitHidden' in document) ? 'webkitHidden' : ('mozHidden' in document) ? 'mozHidden' : null; if (hiddenProperty) { let visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange'); let onVisibilityChange = () => { console.log('visibilityChange'); changePlay(); }; document.addEventListener(visibilityChangeEvent, onVisibilityChange); } else { console.log("This demo requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API."); } // 更改音乐播放状态 function changePlay() { if (document[hiddenProperty]) { // 页面隐藏 if (statusBeforeHide) { music.pause(); // 伪代码,音乐暂停,但不改变statusBeforeHide } } else { // 页面显示 if (statusBeforeHide) { music.play() // 伪代码,如果statusBeforeHide是true,音乐继续播放 } } } [代码] 拓展: 1.可在页面后台运行时清掉一些定时器,页面显示时再重新设置定时器,节省性能
2019-07-24