HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

nvue就是个坑人的东西,weex的模块压根引入不了

nvue

白折腾了2天,果断马上放弃了

白折腾了2天,果断马上放弃了

hbuilderx 本地打包

Hbuilderx 本地打包,个人感觉比较麻烦,先生成一个包,然后用Android Studio在重新编译生成apk包, hbuilderx能不能,直接做一个生成apk的功能,不用在通过第三方的软件去生成apk。

Hbuilderx 本地打包,个人感觉比较麻烦,先生成一个包,然后用Android Studio在重新编译生成apk包, hbuilderx能不能,直接做一个生成apk的功能,不用在通过第三方的软件去生成apk。

杀千刀的微信支付解决方法(也许可以解决)

微信支付
      上次用uniapp遇到微信支付问题([https://ask.dcloud.net.cn/question/74068](https://ask.dcloud.net.cn/question/74068)),许久没上论坛看到有人问我解决没有,于是想起把方法分享下,不一定是对的,只是作为一个参考。  

       我当时的症状是,确定下单返回的数据是对的,但是就是支付各种提示错误,骚的是模拟器一次就成功,然后就再也不行了,后来搞了很久,总算搞定了  

      1:配置问题,首先检查包名是否正确(一般这个不会错)  
      2:获取安卓包签名,我是在手机端用的[http://pan.baidu.com/s/1gdD3LYF](http://),然后输入包名,效果如下  
         MD5     :    59:20:1C:F6:58:92:02:CB:2C:DA:B2:67:52:47:21:12  
         SHA1   :    BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58  
      其中我配置支付宝和百度地图填写签名都是SHA1,都是正常使用没错,但是微信支付就很骚,成功了一次,因为支付宝和百度成功了,没任何问题,微信成功一次,我压根想不到是这个SB参数错了。后面搞了好久才在角落里翻到微信要md5版签名,而且要去掉:号,大写转小写,按上面的就是:59201cf6589202cb2cdab26752472112  
      3:到这一部还是提示错误,那么清掉微信的缓存,有缓存配置对了也白搭。最好是拿新的没手机登下微信试试秒,我是在原生开发的那里看到的,也是被腾讯折腾的。  

   最后不得不吐槽腾讯这SB,就爱标新立异,VUE很好用结果模仿个更难用的小程序语法,文档到处坑,记得第一次做微信支付的签名字段都改了800年了,文档就是不该,还得我搞了个通宵
继续阅读 »
      上次用uniapp遇到微信支付问题([https://ask.dcloud.net.cn/question/74068](https://ask.dcloud.net.cn/question/74068)),许久没上论坛看到有人问我解决没有,于是想起把方法分享下,不一定是对的,只是作为一个参考。  

       我当时的症状是,确定下单返回的数据是对的,但是就是支付各种提示错误,骚的是模拟器一次就成功,然后就再也不行了,后来搞了很久,总算搞定了  

      1:配置问题,首先检查包名是否正确(一般这个不会错)  
      2:获取安卓包签名,我是在手机端用的[http://pan.baidu.com/s/1gdD3LYF](http://),然后输入包名,效果如下  
         MD5     :    59:20:1C:F6:58:92:02:CB:2C:DA:B2:67:52:47:21:12  
         SHA1   :    BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58  
      其中我配置支付宝和百度地图填写签名都是SHA1,都是正常使用没错,但是微信支付就很骚,成功了一次,因为支付宝和百度成功了,没任何问题,微信成功一次,我压根想不到是这个SB参数错了。后面搞了好久才在角落里翻到微信要md5版签名,而且要去掉:号,大写转小写,按上面的就是:59201cf6589202cb2cdab26752472112  
      3:到这一部还是提示错误,那么清掉微信的缓存,有缓存配置对了也白搭。最好是拿新的没手机登下微信试试秒,我是在原生开发的那里看到的,也是被腾讯折腾的。  

   最后不得不吐槽腾讯这SB,就爱标新立异,VUE很好用结果模仿个更难用的小程序语法,文档到处坑,记得第一次做微信支付的签名字段都改了800年了,文档就是不该,还得我搞了个通宵
收起阅读 »

公司团队接外包项目,开发过多款成熟大型的uniapp项目,丰富的小程序开发经验,熟悉各平台规则。

外包

公司官网:www.ichangjie.com

有意联系微信:17771806167
电话:17771806167(蔡)

公司官网:www.ichangjie.com

有意联系微信:17771806167
电话:17771806167(蔡)

uniapp之tabBar自定义底部导航

uniapp模板 uniapp

uni-app原生导航tabBar功能也挺好,不过有时为了满足多样化的项目需求,如:背景色渐变、字体图标,一些特殊图标凸显效果,这时候就只能自定义tabbar来实现功能了。
如下图:分别在H5端、小程序、APP端实现的自定义tabbar效果

新建tabbar.vue组件

<block v-for="(item,index) in tabList" :key="index">  
    <view class="navigator" :class="currentTabIndex == index ? 'on' : ''" @tap="switchTab(index)">  
        <view class="icon">  
            <text class="iconfont" :class="item.icon" :style="[currentTabIndex == index ? {'color': tintColor} : {'color': color}]"></text>  
            <text v-if="item.badge" class="uni_badge">{{item.badge}}</text>  
            <text v-if="item.badgeDot" class="uni_badge uni_badge_dot"></text>  
            </view>  
        <view class="text" :style="[currentTabIndex == index ? {'color': tintColor} : {'color': color}]">{{item.text}}</view>  
    </view>  
</block>
<script>  
    export default {  
        data() {  
            return {  
                tabList: [  
                    {  
                        icon: 'icon-emotion',  
                        text: 'tab01',  
                        badge: 1  
                    },  
                    {  
                        icon: 'icon-qianbao',  
                        text: 'tab02',  
                    },  
                    {  
                        icon: 'icon-choose01',  
                        text: 'tab03',  
                        badgeDot: true  
                    }  
                ],  
                currentTabIndex: this.current  
            }  
        },  
        props: {  
            current: { type: [Number, String], default: 0 },  
            backgroundColor: { type: String, default: '#fbfbfb' },  
            color: { type: String, default: '#999' },  
            tintColor: { type: String, default: '#42b983' }  
        },  
        methods: {  
            switchTab(index){  
                this.currentTabIndex = index  
                this.$emit('click', index)  
            }  
        },  
    }  
</script>

在main.js里面引入全局组件

import tabBar from './components/tabbar.vue'  
Vue.component('tab-bar', tabBar)

此时的tab-bar已经是全局组件了,只需在需要的视图页面引用即可

<tab-bar :current="currentTabIndex" backgroundColor="#fbfbfb" color="#999" tintColor="#42b983" @click="tabClick"></tab-bar>

<tab-bar :current="2" backgroundColor="#1a4065" color="#c3daf1" tintColor="#02f32b" @click="tabClick"></tab-bar>


最后附上uni-app自定义导航栏,希望能喜欢~~
uni-app自定义顶部导航器:https://ask.dcloud.net.cn/article/36388

继续阅读 »

uni-app原生导航tabBar功能也挺好,不过有时为了满足多样化的项目需求,如:背景色渐变、字体图标,一些特殊图标凸显效果,这时候就只能自定义tabbar来实现功能了。
如下图:分别在H5端、小程序、APP端实现的自定义tabbar效果

新建tabbar.vue组件

<block v-for="(item,index) in tabList" :key="index">  
    <view class="navigator" :class="currentTabIndex == index ? 'on' : ''" @tap="switchTab(index)">  
        <view class="icon">  
            <text class="iconfont" :class="item.icon" :style="[currentTabIndex == index ? {'color': tintColor} : {'color': color}]"></text>  
            <text v-if="item.badge" class="uni_badge">{{item.badge}}</text>  
            <text v-if="item.badgeDot" class="uni_badge uni_badge_dot"></text>  
            </view>  
        <view class="text" :style="[currentTabIndex == index ? {'color': tintColor} : {'color': color}]">{{item.text}}</view>  
    </view>  
</block>
<script>  
    export default {  
        data() {  
            return {  
                tabList: [  
                    {  
                        icon: 'icon-emotion',  
                        text: 'tab01',  
                        badge: 1  
                    },  
                    {  
                        icon: 'icon-qianbao',  
                        text: 'tab02',  
                    },  
                    {  
                        icon: 'icon-choose01',  
                        text: 'tab03',  
                        badgeDot: true  
                    }  
                ],  
                currentTabIndex: this.current  
            }  
        },  
        props: {  
            current: { type: [Number, String], default: 0 },  
            backgroundColor: { type: String, default: '#fbfbfb' },  
            color: { type: String, default: '#999' },  
            tintColor: { type: String, default: '#42b983' }  
        },  
        methods: {  
            switchTab(index){  
                this.currentTabIndex = index  
                this.$emit('click', index)  
            }  
        },  
    }  
</script>

在main.js里面引入全局组件

import tabBar from './components/tabbar.vue'  
Vue.component('tab-bar', tabBar)

此时的tab-bar已经是全局组件了,只需在需要的视图页面引用即可

<tab-bar :current="currentTabIndex" backgroundColor="#fbfbfb" color="#999" tintColor="#42b983" @click="tabClick"></tab-bar>

<tab-bar :current="2" backgroundColor="#1a4065" color="#c3daf1" tintColor="#02f32b" @click="tabClick"></tab-bar>


最后附上uni-app自定义导航栏,希望能喜欢~~
uni-app自定义顶部导航器:https://ask.dcloud.net.cn/article/36388

收起阅读 »

南京本地uni-app开发者交流群 849615397 南京本地乐于分享的uni-app开发者请进群交流

南京本地uni-app开发者交流群 849615397,相互学习、南京本地乐于分享的uni-app开发者请进群交流。

南京本地uni-app开发者交流群 849615397,相互学习、南京本地乐于分享的uni-app开发者请进群交流。

20190923

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="css/font-awesome-4.7.0/css/font-awesome.css" />
<style>
*{margin: 0;padding: 0;}
body{width: 100%;height: 100%;background: url(img/section_mobile_bg.jpg);font-size: 14px;}

mobile{padding: 30px 0;text-align: center;}

        #mobile h3{font-family: "arial rounded mt bold";font-size: 10rem;color: #fff;font-style: italic;  
        text-shadow:5px 5px 0.3rem #62819d}  
        #mobile.list i{font-size: 3rem;color: #fff;padding: 2rem;}  
        #mobile.list h5{font-size: 1rem;color: #fff;}  

    </style>  
</head>  
<body>  
    <section id="mobile">  
        <div class="section-inner">  
            <h3>One World</h3>  
            <h2>万物互联,极致体验</h2>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-apple"></i><h2>原生移动app开发</h2></div>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-weixin"></i><h2>微信公众平台开发</h2></div>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-desktop"></i><h2>网站开发</h2></div>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-laptop"></i><h2>桌面应用开发</h2></div>  
        </div>  
    </section>  

</body>  

</html>

继续阅读 »

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="css/font-awesome-4.7.0/css/font-awesome.css" />
<style>
*{margin: 0;padding: 0;}
body{width: 100%;height: 100%;background: url(img/section_mobile_bg.jpg);font-size: 14px;}

mobile{padding: 30px 0;text-align: center;}

        #mobile h3{font-family: "arial rounded mt bold";font-size: 10rem;color: #fff;font-style: italic;  
        text-shadow:5px 5px 0.3rem #62819d}  
        #mobile.list i{font-size: 3rem;color: #fff;padding: 2rem;}  
        #mobile.list h5{font-size: 1rem;color: #fff;}  

    </style>  
</head>  
<body>  
    <section id="mobile">  
        <div class="section-inner">  
            <h3>One World</h3>  
            <h2>万物互联,极致体验</h2>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-apple"></i><h2>原生移动app开发</h2></div>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-weixin"></i><h2>微信公众平台开发</h2></div>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-desktop"></i><h2>网站开发</h2></div>  
            <div class="col-md-3 col-xs-6"><i class="fa fa-laptop"></i><h2>桌面应用开发</h2></div>  
        </div>  
    </section>  

</body>  

</html>

收起阅读 »

致dcloud团队--能不能有点责任心

更新了一下版本,2.2.0与2.3.0直接,具体哪个版本我也不细看了。然后打包一份代码去线上。一大堆接口报错。花了整整一上午定位为题。后面弹出有新版本,手贱更新到了2.3.2版本。发现所有的问题奇迹般的好了。后来发现是之前的版本把我的请求方式换成了json。我需要的是formData。

这只是其中一次升级遇到的问题,这次我定位问题话的时间最多就吐槽一下。每次升级都有写小问题,能不能把概率降下来。

继续阅读 »

更新了一下版本,2.2.0与2.3.0直接,具体哪个版本我也不细看了。然后打包一份代码去线上。一大堆接口报错。花了整整一上午定位为题。后面弹出有新版本,手贱更新到了2.3.2版本。发现所有的问题奇迹般的好了。后来发现是之前的版本把我的请求方式换成了json。我需要的是formData。

这只是其中一次升级遇到的问题,这次我定位问题话的时间最多就吐槽一下。每次升级都有写小问题,能不能把概率降下来。

收起阅读 »

Native.js 获取4G网络/数据网络 IP地址

Native.JS

Native.js 获取4G网络/数据网络 IP地址

Java代码

/**  
 * @Title: getIpAddress  
 *    
 * @Description: 获取设备ip地址  
 *    
 * @return String  
 */  
public static String getIpAddress() {  
    try {  
        for (Enumeration<NetworkInterface> enNetI = NetworkInterface.getNetworkInterfaces(); enNetI.hasMoreElements();) {  
            NetworkInterface netI = enNetI.nextElement();  
            for (Enumeration<InetAddress> enumIpAddr = netI.getInetAddresses();enumIpAddr.hasMoreElements();) {  
            InetAddress inetAddress = enumIpAddr.nextElement();  
                if (inetAddress instanceof Inet4Address && !inetAddress.isLoopbackAddress()) {  
                    return inetAddress.getHostAddress();  
                }  
            }  
        }  
    } catch (SocketException e) {  
        e.printStackTrace();  
    }  
    return "";  
}

转换为JS代码

// 导入网络接口类  
var NetworkInterface = plus.android.importClass("java.net.NetworkInterface")  

// 导入InetAddress类  
var InetAddress = plus.android.importClass("java.net.InetAddress")  

// 导入Inet4Address类  
var Inet4Address = plus.android.importClass("java.net.Inet4Address")  

// 定义变量,获取网络接口  
var networkInterface = NetworkInterface.getNetworkInterfaces()  

// 遍历网络接口  
while (plus.android.invoke(networkInterface, 'hasMoreElements')) {  
    var networkInterfaceElement = plus.android.invoke(networkInterface, 'nextElement')  

     // 获取各个网络接口的地址  
    var inetAddresses = plus.android.invoke(networkInterfaceElement, 'getInetAddresses')  

     // 遍历从各个网络接口获取的地址  
    while (plus.android.invoke(inetAddresses, 'hasMoreElements')) {  
        var inetAddressesElement = plus.android.invoke(inetAddresses, 'nextElement')  

        // 判断获取的地址不是环回接口的地址并且属于IPv4地址  
        if (!plus.android.invoke(inetAddressesElement, 'isLoopbackAddress') && inetAddressesElement instanceof Inet4Address) {  
            console.log(plus.android.invoke(inetAddressesElement, 'getHostAddress'))  

            // 获取主机地址  
            this.ipAddress = plus.android.invoke(inetAddressesElement, 'getHostAddress')  
        }  
    }  
}

参考CSDN

Android获取当前网络状态和获取当前设备网络ip地址 - yc的博客 - CSDN博客
Android获取如何获取当前手机IP地址 - 程龙的博客 - CSDN博客
Android获取IP地址的两种方式(准确版) - sinat_16458039的博客 - CSDN博客
android手机两种方式获取IP地址 - 安卓吧 - 博客园

问答

Native.js获取android有线网络IP地址

继续阅读 »

Native.js 获取4G网络/数据网络 IP地址

Java代码

/**  
 * @Title: getIpAddress  
 *    
 * @Description: 获取设备ip地址  
 *    
 * @return String  
 */  
public static String getIpAddress() {  
    try {  
        for (Enumeration<NetworkInterface> enNetI = NetworkInterface.getNetworkInterfaces(); enNetI.hasMoreElements();) {  
            NetworkInterface netI = enNetI.nextElement();  
            for (Enumeration<InetAddress> enumIpAddr = netI.getInetAddresses();enumIpAddr.hasMoreElements();) {  
            InetAddress inetAddress = enumIpAddr.nextElement();  
                if (inetAddress instanceof Inet4Address && !inetAddress.isLoopbackAddress()) {  
                    return inetAddress.getHostAddress();  
                }  
            }  
        }  
    } catch (SocketException e) {  
        e.printStackTrace();  
    }  
    return "";  
}

转换为JS代码

// 导入网络接口类  
var NetworkInterface = plus.android.importClass("java.net.NetworkInterface")  

// 导入InetAddress类  
var InetAddress = plus.android.importClass("java.net.InetAddress")  

// 导入Inet4Address类  
var Inet4Address = plus.android.importClass("java.net.Inet4Address")  

// 定义变量,获取网络接口  
var networkInterface = NetworkInterface.getNetworkInterfaces()  

// 遍历网络接口  
while (plus.android.invoke(networkInterface, 'hasMoreElements')) {  
    var networkInterfaceElement = plus.android.invoke(networkInterface, 'nextElement')  

     // 获取各个网络接口的地址  
    var inetAddresses = plus.android.invoke(networkInterfaceElement, 'getInetAddresses')  

     // 遍历从各个网络接口获取的地址  
    while (plus.android.invoke(inetAddresses, 'hasMoreElements')) {  
        var inetAddressesElement = plus.android.invoke(inetAddresses, 'nextElement')  

        // 判断获取的地址不是环回接口的地址并且属于IPv4地址  
        if (!plus.android.invoke(inetAddressesElement, 'isLoopbackAddress') && inetAddressesElement instanceof Inet4Address) {  
            console.log(plus.android.invoke(inetAddressesElement, 'getHostAddress'))  

            // 获取主机地址  
            this.ipAddress = plus.android.invoke(inetAddressesElement, 'getHostAddress')  
        }  
    }  
}

参考CSDN

Android获取当前网络状态和获取当前设备网络ip地址 - yc的博客 - CSDN博客
Android获取如何获取当前手机IP地址 - 程龙的博客 - CSDN博客
Android获取IP地址的两种方式(准确版) - sinat_16458039的博客 - CSDN博客
android手机两种方式获取IP地址 - 安卓吧 - 博客园

问答

Native.js获取android有线网络IP地址

收起阅读 »

推荐一个纯js的二维码生成与解析开源库

开源 二维码

jsQR 是一个纯 JavaScript 二维码解析库。该库读取原始图像或者是摄像头,并将定位,提取和解析其中的任何QR码。Apache License 2.0协议。jsQR旨在成为一个完全独立的扫描QR码库。根据设计,它不包含任何特定于平台的代码。这使得它可以轻松扫描前端网络摄像头流,用户上传的图像,或者用作后端Node.js过程的一部分。如果要使用jsQR扫描网络摄像头流,则需要ImageData从视频流中提取。然后可以将其传递给jsQR。

官方说明地址:https://www.oschina.net/p/jsqr(这是开源中国网站上的,需要注册)
DEMO地址:https://cozmo.github.io/jsQR/,需要允许摄像头权限,可发到手机上浏览器打开测试。
开源库地址:https://github.com/cozmo/jsQR

该js可以直接识别视频流或图片中的二维码;但是当前HbuilderX不支持实时获取摄像头视频流,希望以后能够添加摄像头实时视频流获取的功能。

继续阅读 »

jsQR 是一个纯 JavaScript 二维码解析库。该库读取原始图像或者是摄像头,并将定位,提取和解析其中的任何QR码。Apache License 2.0协议。jsQR旨在成为一个完全独立的扫描QR码库。根据设计,它不包含任何特定于平台的代码。这使得它可以轻松扫描前端网络摄像头流,用户上传的图像,或者用作后端Node.js过程的一部分。如果要使用jsQR扫描网络摄像头流,则需要ImageData从视频流中提取。然后可以将其传递给jsQR。

官方说明地址:https://www.oschina.net/p/jsqr(这是开源中国网站上的,需要注册)
DEMO地址:https://cozmo.github.io/jsQR/,需要允许摄像头权限,可发到手机上浏览器打开测试。
开源库地址:https://github.com/cozmo/jsQR

该js可以直接识别视频流或图片中的二维码;但是当前HbuilderX不支持实时获取摄像头视频流,希望以后能够添加摄像头实时视频流获取的功能。

收起阅读 »

uni-app App端 iOS13 无法滚动的解决方案

iOS13

老版uni-app iOS App,在iOS13上会有页面无法上下滚动的问题。
需要开发者及时升级处理。
(5+App/wap2app不涉及此问题)

方式1. 升级到HBuilderX 最新版

如果是本地打包,或cli项目,同样升级到最新的匹配版本
重新打包ipa包,提交Appstore审核
对于老用户,如果你之前留有升级策略控制,那么应该判断如果是iOS13则强制引导用户去Appstore升级。

此方式除了解决不能滚动的问题,还解决了其他一些iOS适配问题,如状态栏前景颜色、状态栏高度获取等细节。

对于使用非自定义组件编译模式的应用,升级HBuilderX还不够,还需要升级适配自定义组件编译模式,否则iOS13上还是无法滚动。

方式2. 不升级HBuilderX或通过wgt更新处理此问题

如果你的app无法短时间内升级HBuilderX,或者希望用wgt更新来强迫用户升级,可以使用如下方式

  1. 在 HBuilderX 安装目录搜索并找到 uniappview.html 文件(Mac:HBuilderX.app/Contents/HBuilderX/plugins/weapp-tools/template/common/uniappview.html;Windows:HBuilderX\plugins\weapp-tools\template\common__uniappview.html)
  2. 打开 __uniappview.html 文件,进行编辑
  3. <script src="__uniappes6.js"></script> 前插入如下代码
    <script>  
    (function() {  
    if (typeof plus === 'object' && plus.os.name === 'iOS') {  
      var time = 0  
      document.addEventListener('touchstart', function(event) {  
        time = Date.now()  
      }, {  
        passive: true  
      })  
      var webview = plus.webview.currentWebview()  
      webview.__origin_getStyle = webview.getStyle  
      webview.getStyle = function() {  
        if (Date.now() - time > 100) {  
          return this.__origin_getStyle()  
        }  
      }  
    }  
    })()  
    </script>

插入后效果:

修改完成后,重新编译项目即可。可在HBuilderX发行菜单中制作wgt资源进行热更新。

这种方式仅作为临时使用,解决iOS13不能滚动的问题。其他有些细节体验问题,还需完整升级HBuilderX、重新打ipa包提交才能解决。
此方案适用于由于某些原因不能升级 HBuilderX 的用户,用以临时解决 iOS13 上页面无法滚动的问题,请大家尽快升级新版 HBuilderX。
非自定义组件模式,如果不能及时升级为自定义组件模式,也可使用方案2来解决滚动问题。

升级HBuilderX 2.3新版可能会遇到其他问题,见社区公告。

继续阅读 »

老版uni-app iOS App,在iOS13上会有页面无法上下滚动的问题。
需要开发者及时升级处理。
(5+App/wap2app不涉及此问题)

方式1. 升级到HBuilderX 最新版

如果是本地打包,或cli项目,同样升级到最新的匹配版本
重新打包ipa包,提交Appstore审核
对于老用户,如果你之前留有升级策略控制,那么应该判断如果是iOS13则强制引导用户去Appstore升级。

此方式除了解决不能滚动的问题,还解决了其他一些iOS适配问题,如状态栏前景颜色、状态栏高度获取等细节。

对于使用非自定义组件编译模式的应用,升级HBuilderX还不够,还需要升级适配自定义组件编译模式,否则iOS13上还是无法滚动。

方式2. 不升级HBuilderX或通过wgt更新处理此问题

如果你的app无法短时间内升级HBuilderX,或者希望用wgt更新来强迫用户升级,可以使用如下方式

  1. 在 HBuilderX 安装目录搜索并找到 uniappview.html 文件(Mac:HBuilderX.app/Contents/HBuilderX/plugins/weapp-tools/template/common/uniappview.html;Windows:HBuilderX\plugins\weapp-tools\template\common__uniappview.html)
  2. 打开 __uniappview.html 文件,进行编辑
  3. <script src="__uniappes6.js"></script> 前插入如下代码
    <script>  
    (function() {  
    if (typeof plus === 'object' && plus.os.name === 'iOS') {  
      var time = 0  
      document.addEventListener('touchstart', function(event) {  
        time = Date.now()  
      }, {  
        passive: true  
      })  
      var webview = plus.webview.currentWebview()  
      webview.__origin_getStyle = webview.getStyle  
      webview.getStyle = function() {  
        if (Date.now() - time > 100) {  
          return this.__origin_getStyle()  
        }  
      }  
    }  
    })()  
    </script>

插入后效果:

修改完成后,重新编译项目即可。可在HBuilderX发行菜单中制作wgt资源进行热更新。

这种方式仅作为临时使用,解决iOS13不能滚动的问题。其他有些细节体验问题,还需完整升级HBuilderX、重新打ipa包提交才能解决。
此方案适用于由于某些原因不能升级 HBuilderX 的用户,用以临时解决 iOS13 上页面无法滚动的问题,请大家尽快升级新版 HBuilderX。
非自定义组件模式,如果不能及时升级为自定义组件模式,也可使用方案2来解决滚动问题。

升级HBuilderX 2.3新版可能会遇到其他问题,见社区公告。

收起阅读 »

ios远程打包时出现“导入.p12证书失败”一定要检查一下这个原因

云端打包 云端打包发布常见问题

巨坑,兄弟们
当你所有证书都正常,所有步骤都正常的情况下,
提示导入证书失败,请务必检查你的证书密码里是否包含了“$”字符串!!!

巨坑,兄弟们
当你所有证书都正常,所有步骤都正常的情况下,
提示导入证书失败,请务必检查你的证书密码里是否包含了“$”字符串!!!