HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

MUI集成新大陆、斑马PDA

扫描 扫码 mui

集成新大陆、斑马PDA
代码如下:

document.addEventListener('plusready',function () {    
        scan(function(code) {  
                console.log('扫描结果:'   code);  
        })  
},false);    

function scan(callback) {  
    var main = plus.android.runtimeMainActivity(); //获取activity  
    var context = plus.android.importClass('android.content.Context'); //上下文  
    var receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {  
        onReceive: function(context, intent) { //实现onReceiver回调函数  
            var device_model = plus.device.model;  
            console.log(device_model);  
            if(device_model=="NLS-MT90"){  
                //新大陆 NLS-MT90  
                callback(intent.getStringExtra('SCAN_BARCODE1')) ;  
            }  
            if(device_model=="TC20"){  
                //斑马 TC20  
                callback(intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string'));  
            }  
        }  
    });  
    var IntentFilter = plus.android.importClass('android.content.IntentFilter'); //引入过滤器  
    var Intent = plus.android.importClass('android.content.Intent');  
    var filter = new IntentFilter();  
    filter.addAction('nlscan.action.SCANNER_RESULT'); //新大陆广播  
    filter.addAction('com.zsscan.ACTION');//斑马广播:需要在DataWedge设置  
    main.registerReceiver(receiver, filter); //注册监听  
    mui.toast("初始化完成。");  
}  

斑马PDA需要在设备端配置DataWedge:
进入DataWedge,右上角新增配置文件启用Intent,关联应用程序处关联扫码的APP,Intent操作设置为com.zsscan.ACTION,Intent交付设置为广播Intent

原贴地址 https://blog.csdn.net/qq_37182421/article/details/116750530

继续阅读 »

集成新大陆、斑马PDA
代码如下:

document.addEventListener('plusready',function () {    
        scan(function(code) {  
                console.log('扫描结果:'   code);  
        })  
},false);    

function scan(callback) {  
    var main = plus.android.runtimeMainActivity(); //获取activity  
    var context = plus.android.importClass('android.content.Context'); //上下文  
    var receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {  
        onReceive: function(context, intent) { //实现onReceiver回调函数  
            var device_model = plus.device.model;  
            console.log(device_model);  
            if(device_model=="NLS-MT90"){  
                //新大陆 NLS-MT90  
                callback(intent.getStringExtra('SCAN_BARCODE1')) ;  
            }  
            if(device_model=="TC20"){  
                //斑马 TC20  
                callback(intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string'));  
            }  
        }  
    });  
    var IntentFilter = plus.android.importClass('android.content.IntentFilter'); //引入过滤器  
    var Intent = plus.android.importClass('android.content.Intent');  
    var filter = new IntentFilter();  
    filter.addAction('nlscan.action.SCANNER_RESULT'); //新大陆广播  
    filter.addAction('com.zsscan.ACTION');//斑马广播:需要在DataWedge设置  
    main.registerReceiver(receiver, filter); //注册监听  
    mui.toast("初始化完成。");  
}  

斑马PDA需要在设备端配置DataWedge:
进入DataWedge,右上角新增配置文件启用Intent,关联应用程序处关联扫码的APP,Intent操作设置为com.zsscan.ACTION,Intent交付设置为广播Intent

原贴地址 https://blog.csdn.net/qq_37182421/article/details/116750530

收起阅读 »

css样式在小程序上能够正常显示,但是在安卓上显示失败。

安卓 css样式

.branchWA{
.branchRadius{
border-radius: 79rpx !important;
justify-content:left !important;
position: absolute !important;
.fs_b{
width: 5em;
}
}
.branchRadius_bgZero{
background-color: #f6eee8 !important;
width:216rpx;
height:79rpx !important;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgOne{
background-color: #fbe7e5 !important;
width:216rpx;
height:79rpx !important;
left:268rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgTwo{
background-color: #fffae8 !important;
width:216rpx;
height:79rpx !important;
left:512rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgThree{
background-color: #fbe7e5 !important;
width:216rpx;
height:79rpx !important;
top:157rpx;
left:44rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgFour{
background-color: #f6eee8 !important;
width:407rpx;
height:148rpx !important;
font-size: 46rpx !important;
top:162rpx;
left:320rpx;
padding-left:21rpx !important;
image{
width: 112rpx !important;
height:112rpx !important;
}
}
.branchRadius_bgFive{
background-color: #f6eee8 !important;
width: 285rpx;
height:105rpx !important;
font-size: 34rpx !important;
top:275rpx;
left:22rpx;
padding-left:16rpx !important;
image{
width: 78rpx !important;
height:78rpx !important;
}
}
.branchRadius_bgSix{
background-color: #fffae8 !important;
width:216rpx;
height:79rpx !important;
top:410rpx;
left:224rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgSeven{
background-color: #fbe7e5 !important;
width:216rpx;
height:79rpx !important;
top:344rpx;
left:467rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
}


原先使用数字做为尾标,用于区分各个元素的class样式: <van-button size="small" noline custom-class="branchRadius branchRadius_bg{{ itd % 8 }}" @tap="gtRedirect('/pages/branchdetail', { Id: Id })">
这个在小程序上没有问题,但是在手机上class样式会显示不出来。
改成
<van-button size="small"
noline custom-class="getClassName" @tap="gtRedirect('/pages/branchdetail', { Id: Id })">
computed:{
getClassName(){
var bg="";
switch(this.itd%8){
case 0:
bg="branchRadius_bgZero";break;
case 1:
bg="branchRadius_bgOne";break;
case 2:
bg="branchRadius_bgTwo";break;
case 3:
bg="branchRadius_bgThree";break;
case 4:
bg="branchRadius_bgFour";break;
case 5:
bg="branchRadius_bgFive";break;
case 6:
bg="branchRadius_bgSix";break;
default:
bg="branchRadius_bgSeven";
}
return "branchRadius "+bg;
}
}
后样式显示成功。
继续阅读 »

.branchWA{
.branchRadius{
border-radius: 79rpx !important;
justify-content:left !important;
position: absolute !important;
.fs_b{
width: 5em;
}
}
.branchRadius_bgZero{
background-color: #f6eee8 !important;
width:216rpx;
height:79rpx !important;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgOne{
background-color: #fbe7e5 !important;
width:216rpx;
height:79rpx !important;
left:268rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgTwo{
background-color: #fffae8 !important;
width:216rpx;
height:79rpx !important;
left:512rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgThree{
background-color: #fbe7e5 !important;
width:216rpx;
height:79rpx !important;
top:157rpx;
left:44rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgFour{
background-color: #f6eee8 !important;
width:407rpx;
height:148rpx !important;
font-size: 46rpx !important;
top:162rpx;
left:320rpx;
padding-left:21rpx !important;
image{
width: 112rpx !important;
height:112rpx !important;
}
}
.branchRadius_bgFive{
background-color: #f6eee8 !important;
width: 285rpx;
height:105rpx !important;
font-size: 34rpx !important;
top:275rpx;
left:22rpx;
padding-left:16rpx !important;
image{
width: 78rpx !important;
height:78rpx !important;
}
}
.branchRadius_bgSix{
background-color: #fffae8 !important;
width:216rpx;
height:79rpx !important;
top:410rpx;
left:224rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
.branchRadius_bgSeven{
background-color: #fbe7e5 !important;
width:216rpx;
height:79rpx !important;
top:344rpx;
left:467rpx;
padding-left:11rpx !important;
image{
width: 60rpx !important;
height:60rpx !important;
}
}
}


原先使用数字做为尾标,用于区分各个元素的class样式: <van-button size="small" noline custom-class="branchRadius branchRadius_bg{{ itd % 8 }}" @tap="gtRedirect('/pages/branchdetail', { Id: Id })">
这个在小程序上没有问题,但是在手机上class样式会显示不出来。
改成
<van-button size="small"
noline custom-class="getClassName" @tap="gtRedirect('/pages/branchdetail', { Id: Id })">
computed:{
getClassName(){
var bg="";
switch(this.itd%8){
case 0:
bg="branchRadius_bgZero";break;
case 1:
bg="branchRadius_bgOne";break;
case 2:
bg="branchRadius_bgTwo";break;
case 3:
bg="branchRadius_bgThree";break;
case 4:
bg="branchRadius_bgFour";break;
case 5:
bg="branchRadius_bgFive";break;
case 6:
bg="branchRadius_bgSix";break;
default:
bg="branchRadius_bgSeven";
}
return "branchRadius "+bg;
}
}
后样式显示成功。 收起阅读 »

IOS打包应用权限

Storage manifest

悬崖之上迅雷下载地址:53682.xyz

悬崖之上迅雷下载地址:53682.xyz

有关uni.getLocation的经纬度在高德地图偏移的问题

ASP sublime

悬崖之上迅雷下载地址:53682.xyz

悬崖之上迅雷下载地址:53682.xyz

请教一下hbx编辑器创建的uni-app项目如何转成cli项目

FTP Hello HBuilder

悬崖之上迅雷下载地址:53682.xyz

悬崖之上迅雷下载地址:53682.xyz

Google Play上传应用要求Android App Bundle (AAB) 格式的相关说明

GooglePlay Android aab bundletool

概述

Android App Bundle是Google在2018年推出的Apk动态组件化打包技术,通过AAB格式的App Bundle文件为你的设备动态组装apk来安装。其本质就是把Apk拆分成了多个模块,之前是把一个大而全的apk装到你手机里面,但是你其实用不到这么多东西,把暂时不需要的东西拿出来,这样就会节省很多的资源空间。除了效率和模块化之外,Android App Bundle现在还通过为新安装推出应用程序签名密钥升级提供更高的安全性。
注意:Android App Bundle (AAB) 与 APK 不同,AAB纯粹是为了上传Google Play而设计的,用户无法直接使用安装到手机上,测试AAB文件参考章节手机安装使用AAB格式文件

2021年8月开始Google Play要求新发布应用必须使用Android App Bundle(AAB)格式,即.aab格式文件;更新已经上架的应用还可以继续使用apk格式文件上传

详情参考Google官方博客说明:New Android App Bundle and target API level requirements in 2021

注:Google Play同时要求应用适配Android11,即 targetSdkVersion要求大于等于30。从2021年8月开始发布新应用必须设置targetSdkVersion大于等于30;从2021年11月开始更新已经上架的应用必须设置targetSdkVersion大于等于30。
HBuilderX3.1.0+版本已适配支持Android11,参考https://ask.dcloud.net.cn/article/193设置targetSdkVersion

HBuilderX云端打包支持Android App Bundle (AAB)

HBuilderX3.1.16+版本云端打包已支持Android App Bundle (AAB)格式,由于仅上传Google Play时才需要使用AAB格式文件,提交云端打包配置渠道为“GooglePlay”时云端打包自动生成AAB格式,其它渠道云端打包仍然使用APK格式。

注意:Android App Bundle (AAB)格式不支持安心打包,勾选“GooglePlay”渠道后将使用传统打包模式提交云端打包

<a id="install"/>

本地离线打包支持Android App Bundle (AAB)

离线打包需要原生开发环境Android Studio,使用App离线SDK一直都支持Android App Bundle (AAB),详情参考https://ask.dcloud.net.cn/article/36356

手机安装使用AAB格式文件

Android App Bundle (AAB) 格式文件仅用于上传到Google Play,无法直接将AAB文件安装到手机上,如果要在手机上安装测试AAB格式包,可以使用bundletool工具
可以参考Google官方文档:https://developer.android.com/studio/command-line/bundletool
注意:Google官方文档需要科学上网才能打开

以下是我们整理的操作步骤

  1. 准备环境
    使用bundletool工具需要java环境,建议使用JRE8环境,请自行下载安装,并配置好系统环境变量

  2. 下载bundletool.jar包
    下载地址:https://github.com/google/bundletool/releases

  3. 使用cmd命令将aab文件转换为apks文件
    命令格式参考如下:

    java -jar <bundletool.jar的路径> build-apks --bundle=<.aab文件的路径> --output=<输出.apks的路径> --ks=<打包使用的证书文件的路径> --ks-pass=pass:<证书密码> --ks-key-alias=<证书别名> --key-pass=pass:<证书别名密码,通常与证书密码一致>

    将前面下载的bundletool-all-1.6.0.jar、云端打包生成的myapp.aab、证书文件my.keystore(证书别名为test、密码为123456)放到同一目录,在命令行中切换到当前目录,使用以下命令生成myapp.apks

    java -jar bundletool-all-1.6.0.jar build-apks --bundle=myapp.aab --output=myapp.apks --ks=my.keystore --ks-pass=pass:123456 --ks-key-alias=test --key-pass=pass:123456

    注意:生成apks文件会非常大,但安装到手机上占用空间会比原来apk格式文件小(这是因为只安装当前设备需要的资源)。另外可以在命令行中添加--connected-device参数来生成仅针对当前连接设备的apks文件,减少apks文件大小

  4. 使用cmd命令安装apks文件到手机上
    命令格式参考如下:

    java -jar <bundletool.jar的路径> install-apks --apks=<上一步中生成的.apks文件路径>

    注意:安装apks需要当前环境存的adb可以运行,建议安装Android SDK工具

常见问题

根据Google的要求,使用aab格式上传应用必须加入Google签名保护计划, 加入后需要提交签名证书文件。
注意:不是直接提交签名证书文件,而是要按规范进行转换
建议参考文档:Android Google Play app signing

继续阅读 »

概述

Android App Bundle是Google在2018年推出的Apk动态组件化打包技术,通过AAB格式的App Bundle文件为你的设备动态组装apk来安装。其本质就是把Apk拆分成了多个模块,之前是把一个大而全的apk装到你手机里面,但是你其实用不到这么多东西,把暂时不需要的东西拿出来,这样就会节省很多的资源空间。除了效率和模块化之外,Android App Bundle现在还通过为新安装推出应用程序签名密钥升级提供更高的安全性。
注意:Android App Bundle (AAB) 与 APK 不同,AAB纯粹是为了上传Google Play而设计的,用户无法直接使用安装到手机上,测试AAB文件参考章节手机安装使用AAB格式文件

2021年8月开始Google Play要求新发布应用必须使用Android App Bundle(AAB)格式,即.aab格式文件;更新已经上架的应用还可以继续使用apk格式文件上传

详情参考Google官方博客说明:New Android App Bundle and target API level requirements in 2021

注:Google Play同时要求应用适配Android11,即 targetSdkVersion要求大于等于30。从2021年8月开始发布新应用必须设置targetSdkVersion大于等于30;从2021年11月开始更新已经上架的应用必须设置targetSdkVersion大于等于30。
HBuilderX3.1.0+版本已适配支持Android11,参考https://ask.dcloud.net.cn/article/193设置targetSdkVersion

HBuilderX云端打包支持Android App Bundle (AAB)

HBuilderX3.1.16+版本云端打包已支持Android App Bundle (AAB)格式,由于仅上传Google Play时才需要使用AAB格式文件,提交云端打包配置渠道为“GooglePlay”时云端打包自动生成AAB格式,其它渠道云端打包仍然使用APK格式。

注意:Android App Bundle (AAB)格式不支持安心打包,勾选“GooglePlay”渠道后将使用传统打包模式提交云端打包

<a id="install"/>

本地离线打包支持Android App Bundle (AAB)

离线打包需要原生开发环境Android Studio,使用App离线SDK一直都支持Android App Bundle (AAB),详情参考https://ask.dcloud.net.cn/article/36356

手机安装使用AAB格式文件

Android App Bundle (AAB) 格式文件仅用于上传到Google Play,无法直接将AAB文件安装到手机上,如果要在手机上安装测试AAB格式包,可以使用bundletool工具
可以参考Google官方文档:https://developer.android.com/studio/command-line/bundletool
注意:Google官方文档需要科学上网才能打开

以下是我们整理的操作步骤

  1. 准备环境
    使用bundletool工具需要java环境,建议使用JRE8环境,请自行下载安装,并配置好系统环境变量

  2. 下载bundletool.jar包
    下载地址:https://github.com/google/bundletool/releases

  3. 使用cmd命令将aab文件转换为apks文件
    命令格式参考如下:

    java -jar <bundletool.jar的路径> build-apks --bundle=<.aab文件的路径> --output=<输出.apks的路径> --ks=<打包使用的证书文件的路径> --ks-pass=pass:<证书密码> --ks-key-alias=<证书别名> --key-pass=pass:<证书别名密码,通常与证书密码一致>

    将前面下载的bundletool-all-1.6.0.jar、云端打包生成的myapp.aab、证书文件my.keystore(证书别名为test、密码为123456)放到同一目录,在命令行中切换到当前目录,使用以下命令生成myapp.apks

    java -jar bundletool-all-1.6.0.jar build-apks --bundle=myapp.aab --output=myapp.apks --ks=my.keystore --ks-pass=pass:123456 --ks-key-alias=test --key-pass=pass:123456

    注意:生成apks文件会非常大,但安装到手机上占用空间会比原来apk格式文件小(这是因为只安装当前设备需要的资源)。另外可以在命令行中添加--connected-device参数来生成仅针对当前连接设备的apks文件,减少apks文件大小

  4. 使用cmd命令安装apks文件到手机上
    命令格式参考如下:

    java -jar <bundletool.jar的路径> install-apks --apks=<上一步中生成的.apks文件路径>

    注意:安装apks需要当前环境存的adb可以运行,建议安装Android SDK工具

常见问题

根据Google的要求,使用aab格式上传应用必须加入Google签名保护计划, 加入后需要提交签名证书文件。
注意:不是直接提交签名证书文件,而是要按规范进行转换
建议参考文档:Android Google Play app signing

收起阅读 »

uniapp 支付宝接口支付时返回[-100]:[payment支付宝:62001] 用户中途取消支付操作

支付宝支付

调用支付宝时一直不成功,总是返回62001 提示用户中途取消 实际上我根本就没有取消,最好经过2个小时的排查,发现是以为调用支付宝时传递的参数有问题,或者说是后端返回的数据格式不是支付宝的格式

调用后台接口返回的数据如图:

返回的数据中 有html的转义字符 & 正是因为这个字符造成的支付失败

所以调用方法把 & 替换成正常的&字符,就能正常调用支付了


//转意符换成普通字符  
function escape2Html(str) {  
    var arrEntities = {  
        'lt': '<',  
        'gt': '>',  
        'nbsp': ' ',  
        'amp': '&',  
        'quot': '"'  
    };  
    return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {  
        return arrEntities[t];  
    });  
}  

转义后的结果如图:

替换后,可以正常调用支付宝支付了

调用支付宝付款方法

//app支付宝支付调用支付宝  
            appAliPay(orderInfo){  
                uni.requestPayment({  
                    provider:'alipay',  
                    orderInfo: orderInfo, //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】  
                    success:(res)=> {  
                        console.log('success:' + JSON.stringify(res));  
                        this.paySuccess(res);  
                    },  
                    fail: (err)=> {  
                        console.log('fail:' + JSON.stringify(err));  
                        this.appPayFail(err);  
                    }  
                });  
            },  

注意:之前使用的是H5+的支付方式,应该是官方有处理过,所以不存在这个问题,现在改用uniapp后发现有问题的

这个是在支付宝官方说明中找到的答案
网址: https://opendocs.alipay.com/open/204/105296

继续阅读 »

调用支付宝时一直不成功,总是返回62001 提示用户中途取消 实际上我根本就没有取消,最好经过2个小时的排查,发现是以为调用支付宝时传递的参数有问题,或者说是后端返回的数据格式不是支付宝的格式

调用后台接口返回的数据如图:

返回的数据中 有html的转义字符 & 正是因为这个字符造成的支付失败

所以调用方法把 & 替换成正常的&字符,就能正常调用支付了


//转意符换成普通字符  
function escape2Html(str) {  
    var arrEntities = {  
        'lt': '<',  
        'gt': '>',  
        'nbsp': ' ',  
        'amp': '&',  
        'quot': '"'  
    };  
    return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {  
        return arrEntities[t];  
    });  
}  

转义后的结果如图:

替换后,可以正常调用支付宝支付了

调用支付宝付款方法

//app支付宝支付调用支付宝  
            appAliPay(orderInfo){  
                uni.requestPayment({  
                    provider:'alipay',  
                    orderInfo: orderInfo, //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】  
                    success:(res)=> {  
                        console.log('success:' + JSON.stringify(res));  
                        this.paySuccess(res);  
                    },  
                    fail: (err)=> {  
                        console.log('fail:' + JSON.stringify(err));  
                        this.appPayFail(err);  
                    }  
                });  
            },  

注意:之前使用的是H5+的支付方式,应该是官方有处理过,所以不存在这个问题,现在改用uniapp后发现有问题的

这个是在支付宝官方说明中找到的答案
网址: https://opendocs.alipay.com/open/204/105296

收起阅读 »

【安卓APP】【图片】查看网络动态地址的图片时,长按下载图片

//uni.previewImage 查看动态地址的图片,长按保存。安卓APP端会将一个网页保存下来,而不是一个图片。
//
//解决思路:1.先下载网络图片到手机本地。2.将图片加载到原生图片对象 。3.保存图片。
//
//下列代码,根据实际情况自行修改。

uni.previewImage({
urls: arr,
current: imgindex,
longPressActions: {
itemList: ["保存图片"],
success: (data) => {
//保存图片 到手机
let imgPath = "图片地址";
uni.downloadFile({
url: imgPath, //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log("下载成功", res);
let bitmap = null;
//原生图片对象
bitmap = new plus.nativeObj.Bitmap();
bitmap.load(
res.tempFilePath,
function () {
let name = aaaaaaaaaaa.jpg; //图片名字
bitmap.save(
name,
{},
function (i) {
uni.saveImageToPhotosAlbum({
filePath: i.target,
success: function () {
bitmap.clear(); //销毁Bitmap图片
uni.showToast({
title: "保存图片成功",
mask: false,
duration: 1500,
});
},
});
},
function (e) {
console.log("保存图片失败:" + JSON.stringify(e));
}
);
},
function (e) {
console.log("bmp1.png load failed! " + JSON.stringify(e));
}
);
}
},
});
},
},
});

继续阅读 »

//uni.previewImage 查看动态地址的图片,长按保存。安卓APP端会将一个网页保存下来,而不是一个图片。
//
//解决思路:1.先下载网络图片到手机本地。2.将图片加载到原生图片对象 。3.保存图片。
//
//下列代码,根据实际情况自行修改。

uni.previewImage({
urls: arr,
current: imgindex,
longPressActions: {
itemList: ["保存图片"],
success: (data) => {
//保存图片 到手机
let imgPath = "图片地址";
uni.downloadFile({
url: imgPath, //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log("下载成功", res);
let bitmap = null;
//原生图片对象
bitmap = new plus.nativeObj.Bitmap();
bitmap.load(
res.tempFilePath,
function () {
let name = aaaaaaaaaaa.jpg; //图片名字
bitmap.save(
name,
{},
function (i) {
uni.saveImageToPhotosAlbum({
filePath: i.target,
success: function () {
bitmap.clear(); //销毁Bitmap图片
uni.showToast({
title: "保存图片成功",
mask: false,
duration: 1500,
});
},
});
},
function (e) {
console.log("保存图片失败:" + JSON.stringify(e));
}
);
},
function (e) {
console.log("bmp1.png load failed! " + JSON.stringify(e));
}
);
}
},
});
},
},
});

收起阅读 »

HBuilderX: 关于iOS安心打包,MacOSX 10.14及以上系统,证书安装教程

云打包

先打开 钥匙串访问工具,然后点击左侧的“系统”栏目,最后把三个证书一一拖到 右侧,效果如下:

先打开 钥匙串访问工具,然后点击左侧的“系统”栏目,最后把三个证书一一拖到 右侧,效果如下:

字节跳动小程序 video 的静音属性,原生支持,uni-app不支持

video
<video :src="src" :muted="muted"></video>

无法动态控制静音

<video :src="src" :muted="muted"></video>

无法动态控制静音