HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

HTML编程之如何使用JS实现前端缓存

  在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了。对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极大地减少对服务器的访问。因此这种方法特别适用于使用iframe的框架。

  具体实现思路和方法如下:

  创建一个cache.js文件:

  1、前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据:

  /**

  * 定义需要在用户登录的时候获取到本地的数据字典类别

  */

  var clsCodes = {"clsCodes" :

  ["BOOL",

  "STATUS",

  "USER_TYPE",

  "REPORT_STATUS"

  ]

  };

  /**

  * 获取数据字典到本地

  */

  var dicts;

  2、前端页面,定义一个函数来调用后台接口获取数据,然后保存到本地缓存对象(dicts)中。

  function getDicts() {

  $.post(getContextPath() + "/api/sys/getDictList",

  clsCodes,

  function(resultBean, status, xhRequest) {

  if (resultBean.data != undefined) {

  dicts = resultBean.data;

  }

  },

  'json');

  }

  在主页面加载的时候调用这个方法一次性获取数据并缓存起来。这样,以后需要同样的数据,就直接从本地对象dicts中获取了。如果大家还存在疑问的话,可以留言咨询,我们可以共同学习,一起进步。

  本文由专业的郑州app开发公司燚轩科技整理发布,原创不易,如需转载请注明出处!

继续阅读 »

  在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了。对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极大地减少对服务器的访问。因此这种方法特别适用于使用iframe的框架。

  具体实现思路和方法如下:

  创建一个cache.js文件:

  1、前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据:

  /**

  * 定义需要在用户登录的时候获取到本地的数据字典类别

  */

  var clsCodes = {"clsCodes" :

  ["BOOL",

  "STATUS",

  "USER_TYPE",

  "REPORT_STATUS"

  ]

  };

  /**

  * 获取数据字典到本地

  */

  var dicts;

  2、前端页面,定义一个函数来调用后台接口获取数据,然后保存到本地缓存对象(dicts)中。

  function getDicts() {

  $.post(getContextPath() + "/api/sys/getDictList",

  clsCodes,

  function(resultBean, status, xhRequest) {

  if (resultBean.data != undefined) {

  dicts = resultBean.data;

  }

  },

  'json');

  }

  在主页面加载的时候调用这个方法一次性获取数据并缓存起来。这样,以后需要同样的数据,就直接从本地对象dicts中获取了。如果大家还存在疑问的话,可以留言咨询,我们可以共同学习,一起进步。

  本文由专业的郑州app开发公司燚轩科技整理发布,原创不易,如需转载请注明出处!

收起阅读 »

hbuildX打包苹果企业版证书,发布出去是内测版。用hbuilder 打包是正常的企业版

hbuildX打包苹果企业版证书,发布出去是内测版。用hbuilder 打包是正常的企业版

hbuildX打包苹果企业版证书,发布出去是内测版。用hbuilder 打包是正常的企业版

如何批量安装apk到手机

多光标 批量安装apk

如果你有多个apk在电脑上,期望批量安装到手机上,那么本文就是你想要的。
HBuilderX的多光标对于批量操作有巨大效率帮助。
分享下我自己的经验。

第1步. 资源管理器里新建一个installapks.bat(文件名随意,可以用txt改后缀),点右键使用HBuilderX打开

第2步. 把资源管理器的一堆apk选中,拖入HBuilderX的这个bat编辑器,或者在资源管理器里复制然后粘贴到HBuilderX的编辑器里,得到如下文档内容:

file:///D:/Downloads/65624.apk  
file:///D:/Downloads/13641.apk  
file:///D:/Downloads/74707.apk  
file:///D:/Downloads/43805.apk  
file:///D:/Downloads/72811.apk  
file:///D:/Downloads/93502.apk  
file:///D:/Downloads/24900.apk  
file:///D:/Downloads/51039.apk  
file:///D:/Downloads/31703.apk  
file:///D:/Downloads/80758.apk

注:如果你在HBuilderX的markdown文档里粘贴,会自动变成这种超链接格式,此时按Ctrl+z会还原为文本格式。

第3步. 复制一段文字"adb install -r "到剪切板

第4步. 清除每行开头的"file:///"并替换为"adb install -r "

这里方法很多种:

  • 按下alt,鼠标拖选,执行列选择,选中整列的"file:///"然后粘贴
  • 选中一个"file:///",然后Ctrl+h执行替换,在右上角的替换框里粘贴"adb install -r ",点全部替换
    得到如下文档内容:
    adb install -r D:/Downloads/65624.apk  
    adb install -r D:/Downloads/13641.apk  
    adb install -r D:/Downloads/74707.apk  
    adb install -r D:/Downloads/43805.apk  
    adb install -r D:/Downloads/72811.apk  
    adb install -r D:/Downloads/93502.apk  
    adb install -r D:/Downloads/24900.apk  
    adb install -r D:/Downloads/51039.apk  
    adb install -r D:/Downloads/31703.apk  
    adb install -r D:/Downloads/80758.apk

    第5步. 确保adb命令的存在

    如果你本机电脑的adb已经在环境变量里了,那就可以直接双击运行这个bat文件了。
    如果没有adb,那么HBuilderX的"工具-插件管理"里安装"App开发真机运行"插件时会自带一个adb,如你用HBuilderX开发app则会自动安装这个插件。
    它的目录在HBuilderX的plugins\launcher\base\下
    此时在这个bat文件的第一行,加入如下文字内容:cd D:\Software\HBuilderX\plugins\launcher\base
    然后保存,在资源管理器里双击bat运行即可
    完整文档格式如下:

    cd D:\Software\HBuilderX\plugins\launcher\base  
    adb install -r D:/Downloads/65624.apk  
    adb install -r D:/Downloads/13641.apk  
    adb install -r D:/Downloads/74707.apk  
    adb install -r D:/Downloads/43805.apk  
    adb install -r D:/Downloads/72811.apk  
    adb install -r D:/Downloads/93502.apk  
    adb install -r D:/Downloads/24900.apk  
    adb install -r D:/Downloads/51039.apk  
    adb install -r D:/Downloads/31703.apk  
    adb install -r D:/Downloads/80758.apk
继续阅读 »

如果你有多个apk在电脑上,期望批量安装到手机上,那么本文就是你想要的。
HBuilderX的多光标对于批量操作有巨大效率帮助。
分享下我自己的经验。

第1步. 资源管理器里新建一个installapks.bat(文件名随意,可以用txt改后缀),点右键使用HBuilderX打开

第2步. 把资源管理器的一堆apk选中,拖入HBuilderX的这个bat编辑器,或者在资源管理器里复制然后粘贴到HBuilderX的编辑器里,得到如下文档内容:

file:///D:/Downloads/65624.apk  
file:///D:/Downloads/13641.apk  
file:///D:/Downloads/74707.apk  
file:///D:/Downloads/43805.apk  
file:///D:/Downloads/72811.apk  
file:///D:/Downloads/93502.apk  
file:///D:/Downloads/24900.apk  
file:///D:/Downloads/51039.apk  
file:///D:/Downloads/31703.apk  
file:///D:/Downloads/80758.apk

注:如果你在HBuilderX的markdown文档里粘贴,会自动变成这种超链接格式,此时按Ctrl+z会还原为文本格式。

第3步. 复制一段文字"adb install -r "到剪切板

第4步. 清除每行开头的"file:///"并替换为"adb install -r "

这里方法很多种:

  • 按下alt,鼠标拖选,执行列选择,选中整列的"file:///"然后粘贴
  • 选中一个"file:///",然后Ctrl+h执行替换,在右上角的替换框里粘贴"adb install -r ",点全部替换
    得到如下文档内容:
    adb install -r D:/Downloads/65624.apk  
    adb install -r D:/Downloads/13641.apk  
    adb install -r D:/Downloads/74707.apk  
    adb install -r D:/Downloads/43805.apk  
    adb install -r D:/Downloads/72811.apk  
    adb install -r D:/Downloads/93502.apk  
    adb install -r D:/Downloads/24900.apk  
    adb install -r D:/Downloads/51039.apk  
    adb install -r D:/Downloads/31703.apk  
    adb install -r D:/Downloads/80758.apk

    第5步. 确保adb命令的存在

    如果你本机电脑的adb已经在环境变量里了,那就可以直接双击运行这个bat文件了。
    如果没有adb,那么HBuilderX的"工具-插件管理"里安装"App开发真机运行"插件时会自带一个adb,如你用HBuilderX开发app则会自动安装这个插件。
    它的目录在HBuilderX的plugins\launcher\base\下
    此时在这个bat文件的第一行,加入如下文字内容:cd D:\Software\HBuilderX\plugins\launcher\base
    然后保存,在资源管理器里双击bat运行即可
    完整文档格式如下:

    cd D:\Software\HBuilderX\plugins\launcher\base  
    adb install -r D:/Downloads/65624.apk  
    adb install -r D:/Downloads/13641.apk  
    adb install -r D:/Downloads/74707.apk  
    adb install -r D:/Downloads/43805.apk  
    adb install -r D:/Downloads/72811.apk  
    adb install -r D:/Downloads/93502.apk  
    adb install -r D:/Downloads/24900.apk  
    adb install -r D:/Downloads/51039.apk  
    adb install -r D:/Downloads/31703.apk  
    adb install -r D:/Downloads/80758.apk
收起阅读 »

云打包失败,也没有任何报错。原因是图片名称含中文

uni_app HBuilder 云打包

记录一个云打包不成功但是又没有任何错误提示的问题以及我的排错方式

直接说问题所在: 项目中引用了包含中文名字的图片,经过验证,把名字改成不含中文就打包成功,再改成中文就失败

出现问题:

第一天还成功打包过这个项目,第二天就打包不成功。
打包的状态知道编译完成,然后没有动静了,没有弹框提示,也没有报错,尝试多次还是一样。

可能原因:

1、官方云打包暂时出问题 (咨询后排除)
2、编辑器出问题 (通过新建项目运行打包,打包成功,此项排除)
3、项目本身问题

第三个问题的排除方法:

上一次打包成功后新增了代码,同时还合并了同事的代码。
1、通过git回滚,定位是哪一个commit出的问题
2、再查看出问题的那个版本里有了哪些改变
3、一个个排除这些改变

最后定位到了中文名称图片的问题,折腾了大半天,终于解决了问题。
不知道这个算不算bug,还是说官方已经说明不能用中文名的图片或者文件,只是我没有看到而已。
当时使用的HX是8月23号发的版本

继续阅读 »

记录一个云打包不成功但是又没有任何错误提示的问题以及我的排错方式

直接说问题所在: 项目中引用了包含中文名字的图片,经过验证,把名字改成不含中文就打包成功,再改成中文就失败

出现问题:

第一天还成功打包过这个项目,第二天就打包不成功。
打包的状态知道编译完成,然后没有动静了,没有弹框提示,也没有报错,尝试多次还是一样。

可能原因:

1、官方云打包暂时出问题 (咨询后排除)
2、编辑器出问题 (通过新建项目运行打包,打包成功,此项排除)
3、项目本身问题

第三个问题的排除方法:

上一次打包成功后新增了代码,同时还合并了同事的代码。
1、通过git回滚,定位是哪一个commit出的问题
2、再查看出问题的那个版本里有了哪些改变
3、一个个排除这些改变

最后定位到了中文名称图片的问题,折腾了大半天,终于解决了问题。
不知道这个算不算bug,还是说官方已经说明不能用中文名的图片或者文件,只是我没有看到而已。
当时使用的HX是8月23号发的版本

收起阅读 »

终于解决:uni.getLocation 这个大bug终于确定了,官方还请跟进一下

targetSdkVersion

经过几天的辗转反侧,终于从坑里面走出来!

miui 在 "targetSdkVersion" : 26, 无法获得 uni.getLocation.

目前解决办法,targetSdkVersion 改成 23就好了。

但是 谷歌和小米商店,已经强制 targetSdkVersion 必须是 26. 请官方修改哦。

目前 uniapp 默认的targetSDKVersion 是 21,所以你怎么测试,都是可以,都觉得我的无理取闹!

继续阅读 »

经过几天的辗转反侧,终于从坑里面走出来!

miui 在 "targetSdkVersion" : 26, 无法获得 uni.getLocation.

目前解决办法,targetSdkVersion 改成 23就好了。

但是 谷歌和小米商店,已经强制 targetSdkVersion 必须是 26. 请官方修改哦。

目前 uniapp 默认的targetSDKVersion 是 21,所以你怎么测试,都是可以,都觉得我的无理取闹!

收起阅读 »

uni-app 在 miui9.6 无法获得定位:uni.getLocation,三星,苹果,美图测试正常。

uni-app 在 miui9.6 无法获得定位:uni.getLocation,三星,苹果,美图测试正常。

H5+ miui9.6 定位 测试正常。

uni-app 在 miui9.6 无法获得定位:uni.getLocation,三星,苹果,美图测试正常。

H5+ miui9.6 定位 测试正常。

分享一个wap2app升级检测-安卓/苹果设备【详细】

升级更新 wap2app

这是一个比较详细的教程
客户端的检测代码+服务端的php代码就可以检测了!

需要注意的是,检测更新在真机调试的情况下是没有效果的,一定要发行原生安装包 安装在手机测试才有效果

1.客户端app.js添加检测代码

  /************升级检测代码开始********** */  
        var ua = navigator.userAgent;  
        //Html5Plus环境,但不是流应用环境  
        if(ua.indexOf('Html5Plus') > -1 && ua.indexOf('StreamApp') == -1) {  
            var server = "http://****.com/c***.php"; //检查更新地址  
            var req = { //升级检测数据  
                "appid": plus.runtime.appid,  
                "version": plus.runtime.version,  
                "imei": plus.device.imei,  
                "plus":plus.os.name  
            };  
            //注释部分是wap2app封装的post请求。示例使用get请求  
            wap2app.ajax.get(server, req, function(rsp) {  
                if(rsp && rsp.status) {  
                    //需要更新,提示用户  
                    plus.nativeUI.confirm(rsp.note, function(event) {  
                        if(0 == event.index) { //用户点击了“立即更新”按钮  
                            plus.runtime.openURL(rsp.url);  
                        }  
                    }, rsp.title, ["立即更新", "取  消"]);  
                }  
            });  
        }  
        /************升级检测代码结束********** */

2.可能刚接触wap2app封装的人不知道把检测代码添加到app.js里的哪个位置,那我就把我已经添加好检测代码的app.js全部代码发出来吧

App({  
    options: {  
        debug: false  
    },  
    /**  
     * 当wap2app初始化完成时,会触发 onLaunch  
     */  
    onLaunch: function() {  
        console.log('launch');  
        /************升级检测代码开始********** */  
        var ua = navigator.userAgent;  
        //Html5Plus环境,但不是流应用环境  
        if(ua.indexOf('Html5Plus') > -1 && ua.indexOf('StreamApp') == -1) {  
            var server = "http://****.com/c***.php"; //检查更新地址  
            var req = { //升级检测数据  
                "appid": plus.runtime.appid,  
                "version": plus.runtime.version,  
                "imei": plus.device.imei,  
                "plus":plus.os.name  
            };  
            //注释部分是wap2app封装的post请求。示例使用get请求  
            wap2app.ajax.get(server, req, function(rsp) {  
                if(rsp && rsp.status) {  
                    //需要更新,提示用户  
                    plus.nativeUI.confirm(rsp.note, function(event) {  
                        if(0 == event.index) { //用户点击了“立即更新”按钮  
                            plus.runtime.openURL(rsp.url);  
                        }  
                    }, rsp.title, ["立即更新", "取  消"]);  
                }  
            });  
        }  
        /************升级检测代码结束********** */  
    },  
    /**  
     * 当wap2app启动,或从后台进入前台显示,会触发 onShow  
     */  
    onShow: function() {  
        console.log('show');  
    },  
    /**  
     * 当wap2app从前台进入后台,会触发 onHide  
     */  
    onHide: function() {  
        console.log('hide');  
    }  
});  
Page('__W2A__www.xxxx.com', { //首页扩展配置  
    onShow: function() {  

    },  
    onClose: function() {  

    }  
});

3.服务端那边是一个PHP文件
官方文档那边有验证客户端appid的,被我去掉了

代码如下:

<?php  
error_reporting(E_ALL^E_NOTICE^E_WARNING);  
header('Content-Type:text/html;charset=utf-8');  
function down(){  
$appid = $_GET['appid'];  
$version = $_GET['version'];  
$os= $_GET['plus'];   
$imei= $_GET['imei'];   
$rsp = array('status' => 0);  
if (isset($appid) && isset($version)) {  
if($version !== "1.1"){ //最新版本号  
$rsp['status'] = 1;  
$rsp['title'] = "Hello 版本更新";  
$rsp['note'] = "本次更新了,此为自定义内容";  
if($os == 'Android'){  
$rsp['url'] = "http://***.com/***.apk"; //安卓安装包地址  
}else{  
$rsp['url'] = "https://itunes.apple.com/cn/app/xxx"; //苹果点击更新后跳转的地址,可以是自己的网页的,也可以是苹果商店的  
}}}exit(json_encode($rsp));}  
$data=down($getdh);    
echo $data;

4.服务端那边php文件里的【最新版本号】要大于之前安装包的版本号才会检测更新

  1. 要改的地方也就客户端app.js里的检测地址、服务器端PHP的版本号、安卓下载地址,苹果点击更新按钮后跳转的地址、更新弹窗提示文字。

继续阅读 »

这是一个比较详细的教程
客户端的检测代码+服务端的php代码就可以检测了!

需要注意的是,检测更新在真机调试的情况下是没有效果的,一定要发行原生安装包 安装在手机测试才有效果

1.客户端app.js添加检测代码

  /************升级检测代码开始********** */  
        var ua = navigator.userAgent;  
        //Html5Plus环境,但不是流应用环境  
        if(ua.indexOf('Html5Plus') > -1 && ua.indexOf('StreamApp') == -1) {  
            var server = "http://****.com/c***.php"; //检查更新地址  
            var req = { //升级检测数据  
                "appid": plus.runtime.appid,  
                "version": plus.runtime.version,  
                "imei": plus.device.imei,  
                "plus":plus.os.name  
            };  
            //注释部分是wap2app封装的post请求。示例使用get请求  
            wap2app.ajax.get(server, req, function(rsp) {  
                if(rsp && rsp.status) {  
                    //需要更新,提示用户  
                    plus.nativeUI.confirm(rsp.note, function(event) {  
                        if(0 == event.index) { //用户点击了“立即更新”按钮  
                            plus.runtime.openURL(rsp.url);  
                        }  
                    }, rsp.title, ["立即更新", "取  消"]);  
                }  
            });  
        }  
        /************升级检测代码结束********** */

2.可能刚接触wap2app封装的人不知道把检测代码添加到app.js里的哪个位置,那我就把我已经添加好检测代码的app.js全部代码发出来吧

App({  
    options: {  
        debug: false  
    },  
    /**  
     * 当wap2app初始化完成时,会触发 onLaunch  
     */  
    onLaunch: function() {  
        console.log('launch');  
        /************升级检测代码开始********** */  
        var ua = navigator.userAgent;  
        //Html5Plus环境,但不是流应用环境  
        if(ua.indexOf('Html5Plus') > -1 && ua.indexOf('StreamApp') == -1) {  
            var server = "http://****.com/c***.php"; //检查更新地址  
            var req = { //升级检测数据  
                "appid": plus.runtime.appid,  
                "version": plus.runtime.version,  
                "imei": plus.device.imei,  
                "plus":plus.os.name  
            };  
            //注释部分是wap2app封装的post请求。示例使用get请求  
            wap2app.ajax.get(server, req, function(rsp) {  
                if(rsp && rsp.status) {  
                    //需要更新,提示用户  
                    plus.nativeUI.confirm(rsp.note, function(event) {  
                        if(0 == event.index) { //用户点击了“立即更新”按钮  
                            plus.runtime.openURL(rsp.url);  
                        }  
                    }, rsp.title, ["立即更新", "取  消"]);  
                }  
            });  
        }  
        /************升级检测代码结束********** */  
    },  
    /**  
     * 当wap2app启动,或从后台进入前台显示,会触发 onShow  
     */  
    onShow: function() {  
        console.log('show');  
    },  
    /**  
     * 当wap2app从前台进入后台,会触发 onHide  
     */  
    onHide: function() {  
        console.log('hide');  
    }  
});  
Page('__W2A__www.xxxx.com', { //首页扩展配置  
    onShow: function() {  

    },  
    onClose: function() {  

    }  
});

3.服务端那边是一个PHP文件
官方文档那边有验证客户端appid的,被我去掉了

代码如下:

<?php  
error_reporting(E_ALL^E_NOTICE^E_WARNING);  
header('Content-Type:text/html;charset=utf-8');  
function down(){  
$appid = $_GET['appid'];  
$version = $_GET['version'];  
$os= $_GET['plus'];   
$imei= $_GET['imei'];   
$rsp = array('status' => 0);  
if (isset($appid) && isset($version)) {  
if($version !== "1.1"){ //最新版本号  
$rsp['status'] = 1;  
$rsp['title'] = "Hello 版本更新";  
$rsp['note'] = "本次更新了,此为自定义内容";  
if($os == 'Android'){  
$rsp['url'] = "http://***.com/***.apk"; //安卓安装包地址  
}else{  
$rsp['url'] = "https://itunes.apple.com/cn/app/xxx"; //苹果点击更新后跳转的地址,可以是自己的网页的,也可以是苹果商店的  
}}}exit(json_encode($rsp));}  
$data=down($getdh);    
echo $data;

4.服务端那边php文件里的【最新版本号】要大于之前安装包的版本号才会检测更新

  1. 要改的地方也就客户端app.js里的检测地址、服务器端PHP的版本号、安卓下载地址,苹果点击更新按钮后跳转的地址、更新弹窗提示文字。

收起阅读 »

没有微信小程序APPID时候,在uni-app中使用测试APPID代替

很多时候微信小程序的正式APPID还没有注册下来,没有APPID小程序开发功能并不完整。这个时候就可以在小程序开发者工具中先获取测试APPID,然后配置到HX项目中。

第一步:先在微信开发者工具里面获取到测试APPID,如图


点击小程序获取测试APPID

第二步:在uni-app配置项中加入APPID即可,如图

再次编译后,微信开发者工具就可以拥有全部的开发功能了

继续阅读 »

很多时候微信小程序的正式APPID还没有注册下来,没有APPID小程序开发功能并不完整。这个时候就可以在小程序开发者工具中先获取测试APPID,然后配置到HX项目中。

第一步:先在微信开发者工具里面获取到测试APPID,如图


点击小程序获取测试APPID

第二步:在uni-app配置项中加入APPID即可,如图

再次编译后,微信开发者工具就可以拥有全部的开发功能了

收起阅读 »

郑州小程序开发比较适合什么行业投资

微信小程序 小程序

  郑州小程序开发认为目前小程序主要的优势就是在流量上的优势,而小程序的出现也让越来越多的人相信,小程序的仍然有很大的发展空间,那么小程序开发有哪些类型呢,对于投资者来说哪些行业适合做小程序呢? 今天就为大家分析解答一下吧。

  1、在线点餐小程序 。对于生意火爆的餐厅来说,最影响服务质量的一个因素之一,就是消费者排队时间长。如果商家开发有自己的小程序,消费者便能自主下单,还能选择座位,结账支付后直接退出页面即可,操作过程简单,也不会占用手机内存。

  2、电商小程序。这是目前最为常见的小程序类型。这类型小程序具有产品展示和支付功能,用户可以直接通过小程序挑选和购买商品,不需要跳转到第三方平台。电商小程序的优势是,缩短了用户的决策路径,降低了用户的决策时间,让交易变得更高效。而且小程序还带有客服功能,消费过程中同样可以实现一对一交流。

  3、酒店预订小程序。网络预定酒店已经成为八零九零后出行的普遍方式,除了优惠力度大以外,网络预订很便捷,也是吸引他们的主要原因。酒店预订类小程序同样具备导航功能和在线支付功能。小程序与官网配合使用,也是提高品牌知名度的有效方法,无论是酒店还是民宿,有个自己的小程序,也是很有必要。

  4、互动功能类。互动类的小程序近期也出现得比较多,不过这类小程序一旦造成刷屏,就很容易被封号,总之,还是要按照微信规则来进行开发和推广。微信小程序开发成本低,技术难度小,用户体验更佳,无论哪种类型的商家,都能在小程序中挖掘到最适合自己的引流方式。

  微信小程序已经成为互联网的一匹黑马,从刚刚发布时的不被看好,到现在的火爆,中间不到两年的时间,虽然经历了一些起伏,但小程序毫无疑问已经成为目前各企业抢占流量的主要入口。即便是不太关注互联网行业的普通用户,也能充分感受到小程序的发展速度。所以对于企业投资者来说,现在要做的就是抓住机遇,开发一款适合自己行业的小程序来盈利。
本文由专业的郑州小程序开发燚轩科技整理发布,如需转载请注明出处。

继续阅读 »

  郑州小程序开发认为目前小程序主要的优势就是在流量上的优势,而小程序的出现也让越来越多的人相信,小程序的仍然有很大的发展空间,那么小程序开发有哪些类型呢,对于投资者来说哪些行业适合做小程序呢? 今天就为大家分析解答一下吧。

  1、在线点餐小程序 。对于生意火爆的餐厅来说,最影响服务质量的一个因素之一,就是消费者排队时间长。如果商家开发有自己的小程序,消费者便能自主下单,还能选择座位,结账支付后直接退出页面即可,操作过程简单,也不会占用手机内存。

  2、电商小程序。这是目前最为常见的小程序类型。这类型小程序具有产品展示和支付功能,用户可以直接通过小程序挑选和购买商品,不需要跳转到第三方平台。电商小程序的优势是,缩短了用户的决策路径,降低了用户的决策时间,让交易变得更高效。而且小程序还带有客服功能,消费过程中同样可以实现一对一交流。

  3、酒店预订小程序。网络预定酒店已经成为八零九零后出行的普遍方式,除了优惠力度大以外,网络预订很便捷,也是吸引他们的主要原因。酒店预订类小程序同样具备导航功能和在线支付功能。小程序与官网配合使用,也是提高品牌知名度的有效方法,无论是酒店还是民宿,有个自己的小程序,也是很有必要。

  4、互动功能类。互动类的小程序近期也出现得比较多,不过这类小程序一旦造成刷屏,就很容易被封号,总之,还是要按照微信规则来进行开发和推广。微信小程序开发成本低,技术难度小,用户体验更佳,无论哪种类型的商家,都能在小程序中挖掘到最适合自己的引流方式。

  微信小程序已经成为互联网的一匹黑马,从刚刚发布时的不被看好,到现在的火爆,中间不到两年的时间,虽然经历了一些起伏,但小程序毫无疑问已经成为目前各企业抢占流量的主要入口。即便是不太关注互联网行业的普通用户,也能充分感受到小程序的发展速度。所以对于企业投资者来说,现在要做的就是抓住机遇,开发一款适合自己行业的小程序来盈利。
本文由专业的郑州小程序开发燚轩科技整理发布,如需转载请注明出处。

收起阅读 »

安卓微信支付-100 (-1)错误排除指导

微信支付

微信支付报错信息:

{"code":-100,"message":"[payment微信:-1]General errors"}

以上错误码-100是5+SDK的错误码,而-1为微信支付SDK的错误码,对应的微信的错误类型为:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
根据错误提示我们逐步排除。

登记的包名或签名错误

核对微信后台登记的应用包名以及应用签名是否有误,登记的签名需要和签名工具获取到的一致,更新这些信息并非马上生效,可以等一段时间再测试。另外需要确保应用已经通过审核,并获得支付权限。
如果核对均无误,尝试重新登陆或者重装微信。

APPID错误

核对项目中manifest.json文件中填写的微信支付的AppID是否和平台上的一致。

付款信息计算错误

核对后端代码,查验统一下单调起支付接口的逻辑是否有误,并确保两次签名生成算法一致。

H5+接口调用错误

接口plus.payment.request调用时传入的支付信息是字符串类型,如:

'{"appid":"wx0411fa6a39d61297","noncestr":"71maVjWiEAvU85Wk","package":"Sign=WXPay","partnerid":"1230636401","prepayid":"wx03141004900988e2c281e3170042244847","timestamp":1535955004,"sign":"2AE06EF08E54B47659C79149CD9C284C"}'
继续阅读 »

微信支付报错信息:

{"code":-100,"message":"[payment微信:-1]General errors"}

以上错误码-100是5+SDK的错误码,而-1为微信支付SDK的错误码,对应的微信的错误类型为:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
根据错误提示我们逐步排除。

登记的包名或签名错误

核对微信后台登记的应用包名以及应用签名是否有误,登记的签名需要和签名工具获取到的一致,更新这些信息并非马上生效,可以等一段时间再测试。另外需要确保应用已经通过审核,并获得支付权限。
如果核对均无误,尝试重新登陆或者重装微信。

APPID错误

核对项目中manifest.json文件中填写的微信支付的AppID是否和平台上的一致。

付款信息计算错误

核对后端代码,查验统一下单调起支付接口的逻辑是否有误,并确保两次签名生成算法一致。

H5+接口调用错误

接口plus.payment.request调用时传入的支付信息是字符串类型,如:

'{"appid":"wx0411fa6a39d61297","noncestr":"71maVjWiEAvU85Wk","package":"Sign=WXPay","partnerid":"1230636401","prepayid":"wx03141004900988e2c281e3170042244847","timestamp":1535955004,"sign":"2AE06EF08E54B47659C79149CD9C284C"}'
收起阅读 »

9.1.19.201808300739Hbuilder更新后微信分享而发起的质问与建议

微信分享 HBuilder

DCloud在8月30号更新hbuilder,我在今天更新内容后我难得一次地迫不及待点击更新了Hbuilder,在以往的更新中我通常会等到新版本更新一个月后才进行更新,因为众所皆知,新版本的HBuilder必定会出现一些影响APP的bug。

但这次Hbuilder更新了微信能够分享小程序这一功能让我迫不及待想尝一下这块蛋糕,即使我知道应该会碰到bug的。

新版本的HBuilder更新完毕,运行APP基座毫无问题,APP看起来似乎没有任何问题。于是开始尝试微信分享小程序这一功能,更新内容并没有提示任何新功能代码如何编写的文档,于是,有经验的dcloud开发者会自行前往HTML5+API文档中心寻找。

很顺利的,根据文档说明以及示例,安卓版本的微信分享小程序测试成功,唯一的瑕疵就是小程序缩略图即使尺寸、文件大小按照文档说明设置了,还是会出现模糊。该问题查阅社区,发现有许多开发者一起反馈过,问题下面并没有给出解决方案。如果只是这个小瑕疵,其实可以将就。

后来,测试IOS版本的微信分享小程序,无法成功分享,显示不支持的分享类型,如附件图。查询社区同样发现许多开发者反馈这个问题,也就是说新版本的微信分享小程序在iOS版本上根本就是没有成功的,那么为何版本更新说明不说清楚,让开发者自己蒙头瞎测试

另外,我顺带测试了原本已有的微信分享,安卓版本的微信分享图文链接消息没有问题,而IOS版本的图文链接则是变成了文字消息,起初以为只是我的苹果测试机版本太老引发的,后面用了多部测试机测试发现确实是有这个问题,才上来社区搜索相关问题,发现这个问题是有一大堆开发者遇到了!

之后特地去回头查看文档,文档是已经更改。

微信分享平台,可取值: "web"-分享网页类型,title(必填)、content(必填)、thumbs(必填)、href(网页url,必填)属性值有效; "text"-分享文字类型,content(必填)属性值有效; "image"-分享图片类型,pictures(必填)属性值有效; "music"-分享音乐类型,title(必填)、content(必填)、thumbs(必填)、media(音乐url,必填)属性值有效; "video"-分享视频类型,title(必填)、content(必填)、thumbs(必填)、media(视频url,必填)属性值有效; "miniProgram"-分享小程序类型(仅支持分享到好友),title(必填)、content(必填)、thumbs(图片小于128K,宽高比为5:4,必填)、miniProgram(小程序参数,必填)属性值有效; 没有设置type时,如果href值有效则默认值为"web"

首先值得一提的是,文档说明中“如果href值有效则默认值为"web”是错误的,我程序的href是有效的,但分享出来还是text类型,其二,软件更新新功能无法完美向下兼容,所有开发者都可以理解,但是为什么DCloud的更新提示,对于这一点为什么提都不愿意提一下呢?因为如果开发者不能及时发现问题,更改代码,那么开发者使用新版本hbuilder打包的APP的分享将会出现瘫痪,这种bug在有些公司是会直接导致开发者丢掉饭碗!也就是说,只要在更新提示中加以提醒标注一下,就能让开发者自发解决问题,那为什么不怎么做呢?

对于DCloud这种匠心公司,我总是抱着莫大的敬意的,以及经常会推荐身边的开发者去使用它。我相信dcloud的这种开发模式是适合国情的,适合中国广大的中低级开发者的,但是,请您,不辜负开发者对您的信任,可以嘛?

继续阅读 »

DCloud在8月30号更新hbuilder,我在今天更新内容后我难得一次地迫不及待点击更新了Hbuilder,在以往的更新中我通常会等到新版本更新一个月后才进行更新,因为众所皆知,新版本的HBuilder必定会出现一些影响APP的bug。

但这次Hbuilder更新了微信能够分享小程序这一功能让我迫不及待想尝一下这块蛋糕,即使我知道应该会碰到bug的。

新版本的HBuilder更新完毕,运行APP基座毫无问题,APP看起来似乎没有任何问题。于是开始尝试微信分享小程序这一功能,更新内容并没有提示任何新功能代码如何编写的文档,于是,有经验的dcloud开发者会自行前往HTML5+API文档中心寻找。

很顺利的,根据文档说明以及示例,安卓版本的微信分享小程序测试成功,唯一的瑕疵就是小程序缩略图即使尺寸、文件大小按照文档说明设置了,还是会出现模糊。该问题查阅社区,发现有许多开发者一起反馈过,问题下面并没有给出解决方案。如果只是这个小瑕疵,其实可以将就。

后来,测试IOS版本的微信分享小程序,无法成功分享,显示不支持的分享类型,如附件图。查询社区同样发现许多开发者反馈这个问题,也就是说新版本的微信分享小程序在iOS版本上根本就是没有成功的,那么为何版本更新说明不说清楚,让开发者自己蒙头瞎测试

另外,我顺带测试了原本已有的微信分享,安卓版本的微信分享图文链接消息没有问题,而IOS版本的图文链接则是变成了文字消息,起初以为只是我的苹果测试机版本太老引发的,后面用了多部测试机测试发现确实是有这个问题,才上来社区搜索相关问题,发现这个问题是有一大堆开发者遇到了!

之后特地去回头查看文档,文档是已经更改。

微信分享平台,可取值: "web"-分享网页类型,title(必填)、content(必填)、thumbs(必填)、href(网页url,必填)属性值有效; "text"-分享文字类型,content(必填)属性值有效; "image"-分享图片类型,pictures(必填)属性值有效; "music"-分享音乐类型,title(必填)、content(必填)、thumbs(必填)、media(音乐url,必填)属性值有效; "video"-分享视频类型,title(必填)、content(必填)、thumbs(必填)、media(视频url,必填)属性值有效; "miniProgram"-分享小程序类型(仅支持分享到好友),title(必填)、content(必填)、thumbs(图片小于128K,宽高比为5:4,必填)、miniProgram(小程序参数,必填)属性值有效; 没有设置type时,如果href值有效则默认值为"web"

首先值得一提的是,文档说明中“如果href值有效则默认值为"web”是错误的,我程序的href是有效的,但分享出来还是text类型,其二,软件更新新功能无法完美向下兼容,所有开发者都可以理解,但是为什么DCloud的更新提示,对于这一点为什么提都不愿意提一下呢?因为如果开发者不能及时发现问题,更改代码,那么开发者使用新版本hbuilder打包的APP的分享将会出现瘫痪,这种bug在有些公司是会直接导致开发者丢掉饭碗!也就是说,只要在更新提示中加以提醒标注一下,就能让开发者自发解决问题,那为什么不怎么做呢?

对于DCloud这种匠心公司,我总是抱着莫大的敬意的,以及经常会推荐身边的开发者去使用它。我相信dcloud的这种开发模式是适合国情的,适合中国广大的中低级开发者的,但是,请您,不辜负开发者对您的信任,可以嘛?

收起阅读 »

uniapp嵌入百度地图,android定位无法用。IOS正常。

Webview

请官方花30秒,用uni-app测试以下代码。不要再拖了。

<web-view src="https://map.baidu.com/mobile/webapp/index/index/foo=bar/vt=map"></web-view>

按下图左下角的定位按钮。

继续阅读 »

请官方花30秒,用uni-app测试以下代码。不要再拖了。

<web-view src="https://map.baidu.com/mobile/webapp/index/index/foo=bar/vt=map"></web-view>

按下图左下角的定位按钮。

收起阅读 »