HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

微信小程序每次访问强制版本更新

小程序

需求

微信小程序版本更新后,用户需要长时间不适用小程序,或长按小程序删除后重新查找并进入小程序,版本才会生效。这导致一些紧急修复的补丁,无法对全部用户生效。

解决

在app.vue的代码的onLaunch中加入如下内容,建议放在initApp();之后

// 版本更新  
            const updateManager = uni.getUpdateManager();  

            updateManager.onCheckForUpdate(function (res) {  
              // 请求完新版本信息的回调  
              console.log(res.hasUpdate);  
              if (res.hasUpdate){  
                  updateManager.onUpdateReady(function (res) {  
                    uni.showToast({  
                        title: '发现新版本',  
                        success() {  
                            updateManager.applyUpdate();  
                        }  
                    })  
                  });  

                  updateManager.onUpdateFailed(function (res) {  
                    // 新的版本下载失败  
                    wx.showModal({  
                        title: '已经有新版本了哟~',  
                        content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~'  
                      })  
                  });  
              }  
            });

参考

UNIAPP官方文档
微信官方文档

继续阅读 »

需求

微信小程序版本更新后,用户需要长时间不适用小程序,或长按小程序删除后重新查找并进入小程序,版本才会生效。这导致一些紧急修复的补丁,无法对全部用户生效。

解决

在app.vue的代码的onLaunch中加入如下内容,建议放在initApp();之后

// 版本更新  
            const updateManager = uni.getUpdateManager();  

            updateManager.onCheckForUpdate(function (res) {  
              // 请求完新版本信息的回调  
              console.log(res.hasUpdate);  
              if (res.hasUpdate){  
                  updateManager.onUpdateReady(function (res) {  
                    uni.showToast({  
                        title: '发现新版本',  
                        success() {  
                            updateManager.applyUpdate();  
                        }  
                    })  
                  });  

                  updateManager.onUpdateFailed(function (res) {  
                    // 新的版本下载失败  
                    wx.showModal({  
                        title: '已经有新版本了哟~',  
                        content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~'  
                      })  
                  });  
              }  
            });

参考

UNIAPP官方文档
微信官方文档

收起阅读 »

uni-collapse-item title Expected String got Number

Vue

当进行数据绑定时,uni-collapse-item的title传的是一个数字,提示”应该是字符串,但得到的是数字“这样的提示。

<uni-collapse>  
  <view v-for="(fitem, itemid) in materialInfoList" :key="itemid">  
     <uni-collapse-item :title="fitem.fQty">  <!-- 这个位置 -->  
        <button class="mini-btn" type="warn" size="mini" @click="onDeleteFQty(index, itemid)">删除</button>  
     </uni-collapse-item>  
  </view>  
</uni-collapse>

网友有提示在数据里进行转换。但我这个数据需要进行提交的,不能进行转换。
使用了v-slot进行自定义标题方式

<uni-collapse>  
    <view v-for="(fitem, itemid) in materialInfoList" :key="itemid">  
        <uni-collapse-item>  
            <template v-slot:title> {{fitem.fQty}}</template>  
            <button class="mini-btn" type="warn" size="mini" @click="onDeleteFQty(index, itemid)">删除</button>  
        </uni-collapse-item>  
    </view>  
</uni-collapse>
继续阅读 »

当进行数据绑定时,uni-collapse-item的title传的是一个数字,提示”应该是字符串,但得到的是数字“这样的提示。

<uni-collapse>  
  <view v-for="(fitem, itemid) in materialInfoList" :key="itemid">  
     <uni-collapse-item :title="fitem.fQty">  <!-- 这个位置 -->  
        <button class="mini-btn" type="warn" size="mini" @click="onDeleteFQty(index, itemid)">删除</button>  
     </uni-collapse-item>  
  </view>  
</uni-collapse>

网友有提示在数据里进行转换。但我这个数据需要进行提交的,不能进行转换。
使用了v-slot进行自定义标题方式

<uni-collapse>  
    <view v-for="(fitem, itemid) in materialInfoList" :key="itemid">  
        <uni-collapse-item>  
            <template v-slot:title> {{fitem.fQty}}</template>  
            <button class="mini-btn" type="warn" size="mini" @click="onDeleteFQty(index, itemid)">删除</button>  
        </uni-collapse-item>  
    </view>  
</uni-collapse>
收起阅读 »

行内(行间块状display:inline-block)元素,当设置overflow:hidden之后,元素出现不对齐的情况

css

当设置overflow:hidden之后,元素出现不对齐的情况

原因:行内(行间块状display:inline-block)元素的默认对齐方式是基线对齐即(vertical-align:baseline),设置设置overflow不为visible之后改变了他的默认对齐方式为下边距边缘;其他行内元素依然还是基线对齐就会出现下沉的视觉效果
解决方法:
1、重新设置所有行内元素(inline-block)的对齐方式为vertical-align:top或者bottom
2、设置所有的行内元素(inline-block)的overflow不为visible
3、设置flex布局
1、重新设置所有行内元素(inline-block)的对齐方式为vertical-align:top或者bottom
span.qw{
display: inline-block;
white-space: nowrap;
width:100px;
overflow: hidden;
text-overflow:ellipsis;
/ vertical-align: bottom; /
}
2、设置所有的行内元素(inline-block)的overflow不为visible
span{
display: inline-block;
overflow: hidden;
}
<span>文科妈妈</span>
<span class="qw">12131可是快乐健康产生的速度可能流口水的农村</span>
<span>去我看看</span></p>

继续阅读 »

当设置overflow:hidden之后,元素出现不对齐的情况

原因:行内(行间块状display:inline-block)元素的默认对齐方式是基线对齐即(vertical-align:baseline),设置设置overflow不为visible之后改变了他的默认对齐方式为下边距边缘;其他行内元素依然还是基线对齐就会出现下沉的视觉效果
解决方法:
1、重新设置所有行内元素(inline-block)的对齐方式为vertical-align:top或者bottom
2、设置所有的行内元素(inline-block)的overflow不为visible
3、设置flex布局
1、重新设置所有行内元素(inline-block)的对齐方式为vertical-align:top或者bottom
span.qw{
display: inline-block;
white-space: nowrap;
width:100px;
overflow: hidden;
text-overflow:ellipsis;
/ vertical-align: bottom; /
}
2、设置所有的行内元素(inline-block)的overflow不为visible
span{
display: inline-block;
overflow: hidden;
}
<span>文科妈妈</span>
<span class="qw">12131可是快乐健康产生的速度可能流口水的农村</span>
<span>去我看看</span></p>

收起阅读 »

uni.login qq登录报错

ssl握手失败,SSL handshake aborted: ssl=0x750031aac8: I/O error during system call, Connection reset by peer,怎么解决?

ssl握手失败,SSL handshake aborted: ssl=0x750031aac8: I/O error during system call, Connection reset by peer,怎么解决?

nview-ui这个插件,在HBuilder升级到最新版3.6.14.20221216后,会造成编译到支付宝小程序报错的bug,白屏加载不出首页

诸如此类错误,详细请看截图
Function(...) is not a function
Function("r", "regeneratorRuntime = r")(runtime);
但是不影响手机预览。。。
但是手机鱼预览ios正常,android手机也是白屏出不来。
再补充一点,回退到上个版本就正常了!!!

继续阅读 »

诸如此类错误,详细请看截图
Function(...) is not a function
Function("r", "regeneratorRuntime = r")(runtime);
但是不影响手机预览。。。
但是手机鱼预览ios正常,android手机也是白屏出不来。
再补充一点,回退到上个版本就正常了!!!

收起阅读 »

uniapp 自定义app 退出提示 和 隐藏APP至后台

uniapp

自定义退出

默人情况下,uniapp APP 会在 第一次按退出时, 提示 “APPName:再按一次退出应用”,其中 APPName是配置的应用名称,“再按一次退出应用”是国际化自定义的内容。
在连续两次按退出 后,才会退出应用。

如果想自定义退出提示语和退出方式,可以在 onBackPress 页面生命周期中定义

// #ifdef APP-PLUS  
onBackPress(() => {  

 // 自定义退出弹框  
  // uni.showModal({  
  //   title: '提示',  
  //   content: '是否退出uni-app?',  
  //   success: function(res) {  
  //       if (res.confirm) {  
  //           // 直接退出当前应用  
  //           plus.runtime.quit()  
  //       } else if (res.cancel) {  
  //           console.log('用户点击取消')  
  //       }    
  //   }    
  // })  

// 重写退出方法,自定义退出方式:隐藏APP到系统后台(没有真正退出)  
 let main = plus.android.runtimeMainActivity()  
  plus.runtime.quit = function(){    
      main.moveTaskToBack(false);    
  }  

  // 捕捉退出 toast,自定义提示语  
  // 默认 str 的值就只我们 国际化中定义的内容  
 // 如果自定义退出弹框,就不要在 调用 uni.showToast() 了  
   plus.nativeUI.toast = (function(str){  
    uni.showToast({  
      title:str,    
      icon:'none',    
    })    

  })  
})  
// #endif  
// vue3 setup 需要引入 onBackPress   
import { onBackPress } from '@dcloudio/uni-app'  

参考:
https://ask.dcloud.net.cn/article/35120
https://ask.dcloud.net.cn/article/34959

继续阅读 »

自定义退出

默人情况下,uniapp APP 会在 第一次按退出时, 提示 “APPName:再按一次退出应用”,其中 APPName是配置的应用名称,“再按一次退出应用”是国际化自定义的内容。
在连续两次按退出 后,才会退出应用。

如果想自定义退出提示语和退出方式,可以在 onBackPress 页面生命周期中定义

// #ifdef APP-PLUS  
onBackPress(() => {  

 // 自定义退出弹框  
  // uni.showModal({  
  //   title: '提示',  
  //   content: '是否退出uni-app?',  
  //   success: function(res) {  
  //       if (res.confirm) {  
  //           // 直接退出当前应用  
  //           plus.runtime.quit()  
  //       } else if (res.cancel) {  
  //           console.log('用户点击取消')  
  //       }    
  //   }    
  // })  

// 重写退出方法,自定义退出方式:隐藏APP到系统后台(没有真正退出)  
 let main = plus.android.runtimeMainActivity()  
  plus.runtime.quit = function(){    
      main.moveTaskToBack(false);    
  }  

  // 捕捉退出 toast,自定义提示语  
  // 默认 str 的值就只我们 国际化中定义的内容  
 // 如果自定义退出弹框,就不要在 调用 uni.showToast() 了  
   plus.nativeUI.toast = (function(str){  
    uni.showToast({  
      title:str,    
      icon:'none',    
    })    

  })  
})  
// #endif  
// vue3 setup 需要引入 onBackPress   
import { onBackPress } from '@dcloudio/uni-app'  

参考:
https://ask.dcloud.net.cn/article/35120
https://ask.dcloud.net.cn/article/34959

收起阅读 »

混合开发经常遇到手机报毒的困扰,简单的处理方式,---安全加固混淆去毒

安全 混淆 加固

混合开发经常遇到手机报毒的困扰,简单的处理方式,

一、概述
解决安卓app、华为、OPP/VIVO、小米和荣耀报毒问题.
安卓app报毒爆红,vivo手机爆红,oppo小米华为荣耀手机报毒,手机安装app时提示报毒,有的app是刚打包出来、有的是用着用着就提示报毒,这些风险是怎么回事?


二、案例

三、方案:
1.通过申诉反馈,申诉反馈通过即可解决。
2.扫描APP、技术处理APP去除风险后即可解决。
3.通过安全加固混淆去毒处理。

压缩(Shrink): 检测并删除未使用的类,字段,方法和属性。
优化(Optimize): 分析并优化方法的字节码。
混淆(Obfuscate): 使用简短的无意义名称例如a,b,c等,重命名类,字段和方法。
预检(Preveirfy): 主要是在Java平台上对处理后的代码进行预检。

Proguard处理流程,Proguard是android混淆插件,然后,对于报毒的APK来说,仅通过Proguard混淆是不够的,通常还需要一些更深入文件系统底层的处理才能达到去毒后,用户手机安装不报毒。
Apk119 加固混淆去毒中心,深入apk底层文件系统,持续追踪手机厂商报毒机制,经过测试和大多数用户反馈,是最可靠最安全的。
四、对比
市面上有哪些安全加固和混淆:
1.腾讯,360,网易,百度,爱加密,加固混淆是防止被侵入,主要是解决安全问题,去毒一般不解决;
2.apk119.com,也是做安全加固混淆和去毒,主要是去毒处理,同时也有安全加固功能.

五、总结
安全加固混淆去毒是对文件底层处理,对行业前沿的跟踪涉及大数据收集和分析,尤其是报毒原因,识别病毒,去除误报,需要对行业有丰富认知积累和分析能力。
六、推荐
apk119.com直接对接生产系统,从apk发布到混淆上线自动完成

继续阅读 »

混合开发经常遇到手机报毒的困扰,简单的处理方式,

一、概述
解决安卓app、华为、OPP/VIVO、小米和荣耀报毒问题.
安卓app报毒爆红,vivo手机爆红,oppo小米华为荣耀手机报毒,手机安装app时提示报毒,有的app是刚打包出来、有的是用着用着就提示报毒,这些风险是怎么回事?


二、案例

三、方案:
1.通过申诉反馈,申诉反馈通过即可解决。
2.扫描APP、技术处理APP去除风险后即可解决。
3.通过安全加固混淆去毒处理。

压缩(Shrink): 检测并删除未使用的类,字段,方法和属性。
优化(Optimize): 分析并优化方法的字节码。
混淆(Obfuscate): 使用简短的无意义名称例如a,b,c等,重命名类,字段和方法。
预检(Preveirfy): 主要是在Java平台上对处理后的代码进行预检。

Proguard处理流程,Proguard是android混淆插件,然后,对于报毒的APK来说,仅通过Proguard混淆是不够的,通常还需要一些更深入文件系统底层的处理才能达到去毒后,用户手机安装不报毒。
Apk119 加固混淆去毒中心,深入apk底层文件系统,持续追踪手机厂商报毒机制,经过测试和大多数用户反馈,是最可靠最安全的。
四、对比
市面上有哪些安全加固和混淆:
1.腾讯,360,网易,百度,爱加密,加固混淆是防止被侵入,主要是解决安全问题,去毒一般不解决;
2.apk119.com,也是做安全加固混淆和去毒,主要是去毒处理,同时也有安全加固功能.

五、总结
安全加固混淆去毒是对文件底层处理,对行业前沿的跟踪涉及大数据收集和分析,尤其是报毒原因,识别病毒,去除误报,需要对行业有丰富认知积累和分析能力。
六、推荐
apk119.com直接对接生产系统,从apk发布到混淆上线自动完成

收起阅读 »

uni-app video 组件 高级配置 常见属性记录及注意

video uni_app

声明:本文是在官方文章《video 组件 高阶晋级》的基础上进行整理的,原文地址见文末。

IJKMediaFramework
目前uni-app中 video的实现 是基于ijkplayer基础之上的二次封装, 框架已经设置了一些属性解决常见的问题。
通过 video 标签中的 advanced 可以实现对于一些高级属性的设置,下边是示例

<video :advanced= advanced> </video>    

.........js.............  
export default {  
        data() {  
            return {  
                advanced: [    
                    {    
                        key: "max-fps",    
                        value: 25,    
                        type: "player",    
                    }, {    
                        key: "framedrop",  //跳帧处理,CPU处理较慢时,进行跳帧处理,保证播放流程,画面和声音同步  
                        value: 5,    
                        type: "player",    
                    },{    
                        key: "mediacodec", //android 1开启 0关闭 硬解码(硬件解码更清晰。软解,更稳定)   
                        value: 1,    
                        type: "player",    
                    },{    
                        key: "videotoolbox", //ios 1开启 0关闭 硬解码(硬件解码CPU消耗低。软解,更稳定)   
                        value: 1,    
                        type: "player",    
                    },{    
                        key: "reconnect", //ios 播放是否重连 0否1是   注意:这里不是重连次数,使用除0和1以外的值视频将无法播放(亲测)  
                        value: 1,    
                        type: "format",    
                    },{    
                        key: "skip_loop_filter",//设置是否开启环路过滤: 0开启,画面质量高,解码开销大,48关闭,画面质量差点,解码开销小  
                        value: 48,    
                        type: "codec",    
                    },{    
                        key: "max-buffer-size",//最大缓冲大小,单位kb  
                        value: 1024*1024,    
                        type: "player",    
                    }  
                ],   
                 }  
         }  
}  

有一说一,配了没什么用,视频快进seek还是卡顿,而且是一会卡一下,全程不操作视频才能正常播放,鸡肋。

原文地址:https://ask.dcloud.net.cn/article/39136

继续阅读 »

声明:本文是在官方文章《video 组件 高阶晋级》的基础上进行整理的,原文地址见文末。

IJKMediaFramework
目前uni-app中 video的实现 是基于ijkplayer基础之上的二次封装, 框架已经设置了一些属性解决常见的问题。
通过 video 标签中的 advanced 可以实现对于一些高级属性的设置,下边是示例

<video :advanced= advanced> </video>    

.........js.............  
export default {  
        data() {  
            return {  
                advanced: [    
                    {    
                        key: "max-fps",    
                        value: 25,    
                        type: "player",    
                    }, {    
                        key: "framedrop",  //跳帧处理,CPU处理较慢时,进行跳帧处理,保证播放流程,画面和声音同步  
                        value: 5,    
                        type: "player",    
                    },{    
                        key: "mediacodec", //android 1开启 0关闭 硬解码(硬件解码更清晰。软解,更稳定)   
                        value: 1,    
                        type: "player",    
                    },{    
                        key: "videotoolbox", //ios 1开启 0关闭 硬解码(硬件解码CPU消耗低。软解,更稳定)   
                        value: 1,    
                        type: "player",    
                    },{    
                        key: "reconnect", //ios 播放是否重连 0否1是   注意:这里不是重连次数,使用除0和1以外的值视频将无法播放(亲测)  
                        value: 1,    
                        type: "format",    
                    },{    
                        key: "skip_loop_filter",//设置是否开启环路过滤: 0开启,画面质量高,解码开销大,48关闭,画面质量差点,解码开销小  
                        value: 48,    
                        type: "codec",    
                    },{    
                        key: "max-buffer-size",//最大缓冲大小,单位kb  
                        value: 1024*1024,    
                        type: "player",    
                    }  
                ],   
                 }  
         }  
}  

有一说一,配了没什么用,视频快进seek还是卡顿,而且是一会卡一下,全程不操作视频才能正常播放,鸡肋。

原文地址:https://ask.dcloud.net.cn/article/39136

收起阅读 »

代做 安卓.9.png / 苹果storyboard 启动图片

外包 storyboard

本人具有uniapp、flutter、ios原生app开发经验

q:343626620 v:cq343626620

1.代做 安卓.9.png / iOS苹果storyboard 启动图片,做好满意了再给钱,不满意免费修改;

4.定制/二次开发app、小程序。

价格便宜,包满意!包满意!包满意!

继续阅读 »

本人具有uniapp、flutter、ios原生app开发经验

q:343626620 v:cq343626620

1.代做 安卓.9.png / iOS苹果storyboard 启动图片,做好满意了再给钱,不满意免费修改;

4.定制/二次开发app、小程序。

价格便宜,包满意!包满意!包满意!

收起阅读 »

使用最新的HBuilderx3.6.14打包IOS正式包提交到APP store connect时出现问题

iOS打包

Dear Developer,
We identified one or more issues with a recent delivery for your app, "xxxxxx" 4.4.0 (40405). Your delivery was successful, but you may wish to correct the following issues in your next delivery:
ITMS-90683: Missing purpose string in Info.plist - Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “HBuilder.app” bundle should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.
After you’ve corrected the issues, you can upload a new binary to App Store Connect.
Best regards,
The App Store Team

继续阅读 »

Dear Developer,
We identified one or more issues with a recent delivery for your app, "xxxxxx" 4.4.0 (40405). Your delivery was successful, but you may wish to correct the following issues in your next delivery:
ITMS-90683: Missing purpose string in Info.plist - Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “HBuilder.app” bundle should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources.
After you’ve corrected the issues, you can upload a new binary to App Store Connect.
Best regards,
The App Store Team

收起阅读 »

uniapp没有小程序长期订阅消息的API. wx.requestSubscribeDeviceMessage(Object object)

uniapp 有小程序的一次性消息订阅功能requestSubscribeMessage,但是长期消息的订阅功能requestSubscribeDeviceMessage,有没有考虑加入订阅长期设备消息的功能。

wx.requestSubscribeDeviceMessage(Object object)
基础库 2.20.0 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:支持

小程序插件:不支持

相关文档: 设备消息

功能描述
订阅设备消息接口,调用后弹出授权框,用户同意后会允许开发者给用户发送订阅模版消息。当用户点击“允许”按钮时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。

继续阅读 »

uniapp 有小程序的一次性消息订阅功能requestSubscribeMessage,但是长期消息的订阅功能requestSubscribeDeviceMessage,有没有考虑加入订阅长期设备消息的功能。

wx.requestSubscribeDeviceMessage(Object object)
基础库 2.20.0 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:支持

小程序插件:不支持

相关文档: 设备消息

功能描述
订阅设备消息接口,调用后弹出授权框,用户同意后会允许开发者给用户发送订阅模版消息。当用户点击“允许”按钮时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。

收起阅读 »