HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

第三方登陆微信真机调试成功,发布app后登陆无法发起

这几天app中集成第三方微信的登陆,在真机调试中安卓和ios都没问题;但是打包后安卓出现登陆无法发起的情况;

app中sdk已经配置了,后来才发现原来是集成微信开放平台中有个签名的值;

需要将app的配置文件中的signature签名填写到微信开放平台中关于该应用的签名中;

注:微信开放平台中应用签名的修改,应该是需要等待24后才会生效的;修改后可能不会马上生效;

继续阅读 »

这几天app中集成第三方微信的登陆,在真机调试中安卓和ios都没问题;但是打包后安卓出现登陆无法发起的情况;

app中sdk已经配置了,后来才发现原来是集成微信开放平台中有个签名的值;

需要将app的配置文件中的signature签名填写到微信开放平台中关于该应用的签名中;

注:微信开放平台中应用签名的修改,应该是需要等待24后才会生效的;修改后可能不会马上生效;

收起阅读 »

手机端原生js滑动验证

<!DOCTYPE html>
<html>
<head>
<meta charset="utf8">
<style>
/ 滑动控件容器,亮灰色背景 /

dragContainer {

        position: relative;  
        display: inline-block;  
        background: #e8e8e8;  
        width: 100%;  
        height: 100px;  
        border: 2px solid #e8e8e8;  
    }  
    /* 滑块左边部分,绿色背景 */  
    #dragBg {  
        position: absolute;  
        background-color: #7ac23c;  
        width: 0px;  
        height: 100%;  
    }  
    /* 滑动验证容器文本 */  
    #dragText {  
        position: absolute;  
        width: 100%;  
        height: 100%;  
        /* 文字水平居中 */  
        text-align: center;  
        /* 文字垂直居中,这里不能用百分比,因为百分比是相对原始line-height的,而非div高度 */  
        line-height: 33px;  
        /* 文本不允许选中 */  
        user-select: none;  
        -webkit-user-select: none;  
        line-height: 100px;  
        font-size: 22px;  
    }  
    /* 滑块 */  
    #dragHandler {  
        position: absolute;  
        width: 100px;  
        height: 100%;  
        cursor: move;  
    }  
    /* 滑块初始背景 */  
    .dragHandlerBg {  
        background: #fff no-repeat center url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==");  
    }  
    /* 验证成功时的滑块背景 */  
    .dragHandlerOkBg {  
        background: #fff no-repeat center url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==");  
    }  
</style>  
<script>  
    window.onload = function() {  
        var dragContainer = document.getElementById("dragContainer");  
        var dragBg = document.getElementById("dragBg");  
        var dragText = document.getElementById("dragText");  
        var dragHandler = document.getElementById("dragHandler");  

        //滑块最大偏移量  
        var maxHandlerOffset = dragContainer.clientWidth - dragHandler.clientWidth;  
        //是否验证成功的标记  
        var isVertifySucc = false;  
        initDrag();  

        function initDrag() {  
            dragText.textContent = "拖动滑块验证";  
            dragHandler.addEventListener("touchstart", onDragHandlerMouseDown);  
        }  

        function onDragHandlerMouseDown() {  
            document.addEventListener("touchmove", onDragHandlerMouseMove);  
            document.addEventListener("touchend", onDragHandlerMouseUp);  
        }  

        function onDragHandlerMouseMove(ev) {  
            /*  
            html元素不存在width属性,只有clientWidth  
            offsetX是相对当前元素的,clientX和pageX是相对其父元素的  
            */  
            var left = ev.touches[0].clientX - dragHandler.clientWidth / 2;  
            if(left < 0) {  
                left = 0;  
            } else if(left > maxHandlerOffset) {  
                left = maxHandlerOffset;  
                verifySucc();  
            }  
            dragHandler.style.left = left + "px";  
            dragBg.style.width = dragHandler.style.left;  
        }  
        function onDragHandlerMouseUp() {  
            document.removeEventListener("touchmove", onDragHandlerMouseMove);  
            document.removeEventListener("touchend", onDragHandlerMouseUp);  
            dragHandler.style.left = 0;  
            dragBg.style.width = 0;  
        }  

        //验证成功  
        function verifySucc() {  
            isVertifySucc = true;  
            dragText.textContent = "验证通过";  
            dragText.style.color = "white";  
            dragHandler.setAttribute("class", "dragHandlerOkBg");  
            dragHandler.removeEventListener("touchstart", onDragHandlerMouseDown);  
            document.removeEventListener("touchmove", onDragHandlerMouseMove);  
            document.removeEventListener("touchend", onDragHandlerMouseUp);  
        };  
    }  
</script>  

</head>
<body>
<div id="dragContainer">
<div id="dragBg"></div>
<div id="dragText"></div>
<div id="dragHandler" class="dragHandlerBg"></div>
</div>
</body>
</html>

继续阅读 »

<!DOCTYPE html>
<html>
<head>
<meta charset="utf8">
<style>
/ 滑动控件容器,亮灰色背景 /

dragContainer {

        position: relative;  
        display: inline-block;  
        background: #e8e8e8;  
        width: 100%;  
        height: 100px;  
        border: 2px solid #e8e8e8;  
    }  
    /* 滑块左边部分,绿色背景 */  
    #dragBg {  
        position: absolute;  
        background-color: #7ac23c;  
        width: 0px;  
        height: 100%;  
    }  
    /* 滑动验证容器文本 */  
    #dragText {  
        position: absolute;  
        width: 100%;  
        height: 100%;  
        /* 文字水平居中 */  
        text-align: center;  
        /* 文字垂直居中,这里不能用百分比,因为百分比是相对原始line-height的,而非div高度 */  
        line-height: 33px;  
        /* 文本不允许选中 */  
        user-select: none;  
        -webkit-user-select: none;  
        line-height: 100px;  
        font-size: 22px;  
    }  
    /* 滑块 */  
    #dragHandler {  
        position: absolute;  
        width: 100px;  
        height: 100%;  
        cursor: move;  
    }  
    /* 滑块初始背景 */  
    .dragHandlerBg {  
        background: #fff no-repeat center url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==");  
    }  
    /* 验证成功时的滑块背景 */  
    .dragHandlerOkBg {  
        background: #fff no-repeat center url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==");  
    }  
</style>  
<script>  
    window.onload = function() {  
        var dragContainer = document.getElementById("dragContainer");  
        var dragBg = document.getElementById("dragBg");  
        var dragText = document.getElementById("dragText");  
        var dragHandler = document.getElementById("dragHandler");  

        //滑块最大偏移量  
        var maxHandlerOffset = dragContainer.clientWidth - dragHandler.clientWidth;  
        //是否验证成功的标记  
        var isVertifySucc = false;  
        initDrag();  

        function initDrag() {  
            dragText.textContent = "拖动滑块验证";  
            dragHandler.addEventListener("touchstart", onDragHandlerMouseDown);  
        }  

        function onDragHandlerMouseDown() {  
            document.addEventListener("touchmove", onDragHandlerMouseMove);  
            document.addEventListener("touchend", onDragHandlerMouseUp);  
        }  

        function onDragHandlerMouseMove(ev) {  
            /*  
            html元素不存在width属性,只有clientWidth  
            offsetX是相对当前元素的,clientX和pageX是相对其父元素的  
            */  
            var left = ev.touches[0].clientX - dragHandler.clientWidth / 2;  
            if(left < 0) {  
                left = 0;  
            } else if(left > maxHandlerOffset) {  
                left = maxHandlerOffset;  
                verifySucc();  
            }  
            dragHandler.style.left = left + "px";  
            dragBg.style.width = dragHandler.style.left;  
        }  
        function onDragHandlerMouseUp() {  
            document.removeEventListener("touchmove", onDragHandlerMouseMove);  
            document.removeEventListener("touchend", onDragHandlerMouseUp);  
            dragHandler.style.left = 0;  
            dragBg.style.width = 0;  
        }  

        //验证成功  
        function verifySucc() {  
            isVertifySucc = true;  
            dragText.textContent = "验证通过";  
            dragText.style.color = "white";  
            dragHandler.setAttribute("class", "dragHandlerOkBg");  
            dragHandler.removeEventListener("touchstart", onDragHandlerMouseDown);  
            document.removeEventListener("touchmove", onDragHandlerMouseMove);  
            document.removeEventListener("touchend", onDragHandlerMouseUp);  
        };  
    }  
</script>  

</head>
<body>
<div id="dragContainer">
<div id="dragBg"></div>
<div id="dragText"></div>
<div id="dragHandler" class="dragHandlerBg"></div>
</div>
</body>
</html>

收起阅读 »

企业app开发与运营中,需要与郑州app开发沟通什么

5 App开发

  对于目前郑州app开发市场来说,其趋势正在呈直线上升,而且不仅做app开发的企业逐渐在增加,app开发公司的数量也在不断的增加,那么对于app开发过程中,企业投资者一般比较关心的问题与注意的事项还是非常多的,下面就详细跟大家分析一下。

  1、解决目标用户难题

  一款受欢迎app的打造,首先对用户来说是有价值的,能够满足用户的某些需求,否则便没有市场。解决用户的问题越多,问题越大,你app发挥的功能就越大,用户的粘性就随之增强了。因此,企业在开发和维护自己的移动app时,一定要多交流、多调研、多搜集用户反馈,及时更新和完善自己的不足,争取为用户创造更大的价值。

  2、关注目标用户需求

  目标用户的需要贯穿于app开发、推广、运营等全过程。研发前,你需要通过调查和确定目标用户,来设计开发你的app功能;推广中,你需要结合用户的关注点有针对性的撰写广告内容,吸引更多用户的眼球;运营时,需要不断与用户交流、沟通、反馈,完善自身的服务和产品。企业时刻做好这一点,有利于自身品牌的树立和信誉度提升。

  3、借助推广让用户尽快找到你

  只有更多人使用你的app,才能发挥它更大的价值,为企业带来收益。app开发好后,企业一定要加大市场营销推广力度,通过各种主流媒体如微博微信等推广自己的app,让用户有问题能迅速找到你,并且你能很好的解决他的问题。如果不做广告推广,用户很难找到你,你的app不仅无法更好的更新跌倒,其价值意义也不大,可能白白浪费研发的成本。

  4、做好企业的运营服务

  一款app开发成功之后,企业的工作并没有结束,除了时常通过用户反馈优化和完善自身的产品外,app运营服务便是之后的重点工作。如果不进行有效维护运营,app很有可能马上死掉。企业的运营服务重在专业度和责任心,两者缺一不可,需要专业懂运营的人去维护自己的客户,通过app为客户带来更多的价值,在此过程中就需要运营人员保持高度的责任心和耐心,认真回答客户的疑问。

  关于企业需要在app开发过程中注意的问题和注意事项了,如果想要了解郑州app开发公司哪家好或者报价等问题的话,也可以咨询我们。本文由郑州app开发http://www.appsaa.com整理发布,如需转载请注明出处!

继续阅读 »

  对于目前郑州app开发市场来说,其趋势正在呈直线上升,而且不仅做app开发的企业逐渐在增加,app开发公司的数量也在不断的增加,那么对于app开发过程中,企业投资者一般比较关心的问题与注意的事项还是非常多的,下面就详细跟大家分析一下。

  1、解决目标用户难题

  一款受欢迎app的打造,首先对用户来说是有价值的,能够满足用户的某些需求,否则便没有市场。解决用户的问题越多,问题越大,你app发挥的功能就越大,用户的粘性就随之增强了。因此,企业在开发和维护自己的移动app时,一定要多交流、多调研、多搜集用户反馈,及时更新和完善自己的不足,争取为用户创造更大的价值。

  2、关注目标用户需求

  目标用户的需要贯穿于app开发、推广、运营等全过程。研发前,你需要通过调查和确定目标用户,来设计开发你的app功能;推广中,你需要结合用户的关注点有针对性的撰写广告内容,吸引更多用户的眼球;运营时,需要不断与用户交流、沟通、反馈,完善自身的服务和产品。企业时刻做好这一点,有利于自身品牌的树立和信誉度提升。

  3、借助推广让用户尽快找到你

  只有更多人使用你的app,才能发挥它更大的价值,为企业带来收益。app开发好后,企业一定要加大市场营销推广力度,通过各种主流媒体如微博微信等推广自己的app,让用户有问题能迅速找到你,并且你能很好的解决他的问题。如果不做广告推广,用户很难找到你,你的app不仅无法更好的更新跌倒,其价值意义也不大,可能白白浪费研发的成本。

  4、做好企业的运营服务

  一款app开发成功之后,企业的工作并没有结束,除了时常通过用户反馈优化和完善自身的产品外,app运营服务便是之后的重点工作。如果不进行有效维护运营,app很有可能马上死掉。企业的运营服务重在专业度和责任心,两者缺一不可,需要专业懂运营的人去维护自己的客户,通过app为客户带来更多的价值,在此过程中就需要运营人员保持高度的责任心和耐心,认真回答客户的疑问。

  关于企业需要在app开发过程中注意的问题和注意事项了,如果想要了解郑州app开发公司哪家好或者报价等问题的话,也可以咨询我们。本文由郑州app开发http://www.appsaa.com整理发布,如需转载请注明出处!

收起阅读 »

Android平台离线打包定位报has not amap appkey 错误

离线打包

下载了H5+SDK配置了百度地图插件在本地跑起来以后
plus.geolocation.getCurrentPosition(function(p) {
alert(JSON.stringify(p))
})//提交位置信息
}, function(e) {
alert(JSON.stringify(e))
console.log('Geolocation error: ' + e.message);
},{provider:'baidu'});

提示has not amap appkey
这时要把libs 目录下所有关于高德地图的jar 删掉,map-amap.jar, AMap_3DMap_V2.4.1.jar, AMap_Services_V2.4.0.jar,AMap_Location_V3.3.0_20170118.jar,map-amap.jar,geolocation-amap.jar

继续阅读 »

下载了H5+SDK配置了百度地图插件在本地跑起来以后
plus.geolocation.getCurrentPosition(function(p) {
alert(JSON.stringify(p))
})//提交位置信息
}, function(e) {
alert(JSON.stringify(e))
console.log('Geolocation error: ' + e.message);
},{provider:'baidu'});

提示has not amap appkey
这时要把libs 目录下所有关于高德地图的jar 删掉,map-amap.jar, AMap_3DMap_V2.4.1.jar, AMap_Services_V2.4.0.jar,AMap_Location_V3.3.0_20170118.jar,map-amap.jar,geolocation-amap.jar

收起阅读 »

分享一套漂亮的MUI移动端商城模板

mui

分享一套漂亮的MUI移动端商城模板

MUI

下载地址:http://www.sucaihuo.com/templates/1588.html

继续阅读 »

分享一套漂亮的MUI移动端商城模板

MUI

下载地址:http://www.sucaihuo.com/templates/1588.html

收起阅读 »

周报(20180330):今天你打包了么?

云端打包 清单 周报

热门话题

本周最热(悲)门(伤)的话题,就是云端打包了。

开源项目

uni-migration:统一转换器,可实现将小程序项目转换为快应用、UniApp项目。

无论是使用 HBuilderX 还是 uni-migration,转换或运行时出现问题后,请尽可能提供可以重现问题的示例项目。如果因为是公司的项目,请向领导反馈后提供一个简单的 demo,否则拿不到代码没有办法定位问题。

关于应用中的广告,下载广告演示示例 App 体验 DCloud 广告平台的广告。除了这个示例里面的广告形式外,如果出现其它悬浮或者插入的广告多半是被劫持了。

问题清单

iOS 近期问题

再说两句

HBuilder为什么没有Linux版:这个问题真的是老黄历了,但总想说的什么。每个人有自己的想法和意愿,DCloud 无法满足所有开发者的需求。如果你真的认同 DCloud,喜欢 HBuilder,请移步需求墙http://dev.dcloud.net.cn/wish/

最后

本周的报告就是这些,希望能对大家有所帮助。同时,也希望更多的小伙伴在社区分享自己的经验心得,交流学习。

祝大家周末愉快。

继续阅读 »

热门话题

本周最热(悲)门(伤)的话题,就是云端打包了。

开源项目

uni-migration:统一转换器,可实现将小程序项目转换为快应用、UniApp项目。

无论是使用 HBuilderX 还是 uni-migration,转换或运行时出现问题后,请尽可能提供可以重现问题的示例项目。如果因为是公司的项目,请向领导反馈后提供一个简单的 demo,否则拿不到代码没有办法定位问题。

关于应用中的广告,下载广告演示示例 App 体验 DCloud 广告平台的广告。除了这个示例里面的广告形式外,如果出现其它悬浮或者插入的广告多半是被劫持了。

问题清单

iOS 近期问题

再说两句

HBuilder为什么没有Linux版:这个问题真的是老黄历了,但总想说的什么。每个人有自己的想法和意愿,DCloud 无法满足所有开发者的需求。如果你真的认同 DCloud,喜欢 HBuilder,请移步需求墙http://dev.dcloud.net.cn/wish/

最后

本周的报告就是这些,希望能对大家有所帮助。同时,也希望更多的小伙伴在社区分享自己的经验心得,交流学习。

祝大家周末愉快。

收起阅读 »

setJsFile与appendJsFile的区别

Webview appendJsFile

最近遇到setJsFile、appendJsFile无效不能注入js文件问题。
经过不断调试,原来这两个是有区别的。
这两个都可以设置js文件加载注入,区别在于:

http://html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewObject.setJsFile
setJsFile:设置新的JS文件后将清空之前设置的值。重点在这句话。也就是后台如果一直setJsFile,那么只有最后一个js文件生效。

appendJsFile:添加多个js文件将按照添加的先后顺序执行。也就是说,这个可以一直追加。如果有多个文件,请用这个,不然,坑死……

话说,这论坛人气真不行。

        var w = plus.webview.getWebviewById(webviewid);  
        if (null == w){  
            w = plus.webview.create(url, webviewid, styles, extras);  
            w.setJsFile('_www/js/mui.min.js');  
            w.appendJsFile('_www/js/mui-ext.js');  
            w.appendJsFile('_www/js/app-config.js');  
            w.appendJsFile('_www/js/app-getdata.js');  
            w.appendJsFile('_www/js/app-page.js');  
            w.appendJsFile('_www/js/app-owner.js');  
            w.appendJsFile('_www/js/md5.min.js');  
        }

附上测试工程,内含Backup V1.4.bat一键打包备份工具(需要安装7z)。

继续阅读 »

最近遇到setJsFile、appendJsFile无效不能注入js文件问题。
经过不断调试,原来这两个是有区别的。
这两个都可以设置js文件加载注入,区别在于:

http://html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewObject.setJsFile
setJsFile:设置新的JS文件后将清空之前设置的值。重点在这句话。也就是后台如果一直setJsFile,那么只有最后一个js文件生效。

appendJsFile:添加多个js文件将按照添加的先后顺序执行。也就是说,这个可以一直追加。如果有多个文件,请用这个,不然,坑死……

话说,这论坛人气真不行。

        var w = plus.webview.getWebviewById(webviewid);  
        if (null == w){  
            w = plus.webview.create(url, webviewid, styles, extras);  
            w.setJsFile('_www/js/mui.min.js');  
            w.appendJsFile('_www/js/mui-ext.js');  
            w.appendJsFile('_www/js/app-config.js');  
            w.appendJsFile('_www/js/app-getdata.js');  
            w.appendJsFile('_www/js/app-page.js');  
            w.appendJsFile('_www/js/app-owner.js');  
            w.appendJsFile('_www/js/md5.min.js');  
        }

附上测试工程,内含Backup V1.4.bat一键打包备份工具(需要安装7z)。

收起阅读 »

如何开发app软件,郑州app开发认为这些很重要

5 App开发

  人的记忆有限,不可能能记住所有的事,特别是面对创业。就拿郑州app开发来说,一个app有很多的功能点,不可能全部记住。如果你能根据你的战略、商业模式等把想要实现的app功能列出来,在和外部团队沟通时,不就不会遗漏了吗?所以需要投资者做到以下几点才行。

  1、让自己的思路变得有条理

  当看到所有任务都清晰地显示在眼前,对该做的事情也有个底,这样也会慢慢发现,其实开发一个app、创业也没有那么难,一个个的去攻破、实现就可以了。这样不管和外部的供应商还是经销商还是用户、其他合作伙伴,沟通时心里就会有底,而且非常的有条理,和谁见面、什么时候见面、聊什么都会很清晰。

  2、优化大脑,提高沟通效率

  大脑就像电脑的C盘,装的东西多了,电脑就变得卡了,所以把一些资料存放在其他硬盘,能让它运行得更快。该记下来的就记下来,不要让大脑太累了,让大脑做真正该做的事。创业者,每天要做的事情很多,要记的事情也很多。如果你想找外部团队开发app时,如果能用思维脑图把你想说的画出来,不就节省了很多你和软件开发公司沟通的问题了吗?而且更高效有效。

  3、防止记忆或沟通的遗漏

  有创业者想做电商app,自己思考了一些这个项目怎么来做,供应商、经销商、平台、线下等等每一处怎么来做都有了自己的想法,但是在具体项目找软件开发公司来做的时候,总是会有些人问些问题把自己问住,或者沟通不顺畅,又或者总是沟通有遗漏的地方。最后项目开工了,问题就接踵而至,而究其根本就是创业者自己没有想明白。

  所以,如果你现在也有创业的想法,也想做一个app,现在就不妨用脑图软件把自己脑海里想的全部画出来,可能就会发现很多之前没有想到的盲点。有些创业者也是跟你谈想法,拿一个别人的app或者微信、小程序过来,说要做一个一模一样的,但是问到涉及后台的问题,自己又讲不清了。有歌清晰的app开发思路,和郑州app开发公司合作起来就非常简单了。本文由郑州app开发http://www.appsaa.com编辑整理,如需转载请注明出处。

继续阅读 »

  人的记忆有限,不可能能记住所有的事,特别是面对创业。就拿郑州app开发来说,一个app有很多的功能点,不可能全部记住。如果你能根据你的战略、商业模式等把想要实现的app功能列出来,在和外部团队沟通时,不就不会遗漏了吗?所以需要投资者做到以下几点才行。

  1、让自己的思路变得有条理

  当看到所有任务都清晰地显示在眼前,对该做的事情也有个底,这样也会慢慢发现,其实开发一个app、创业也没有那么难,一个个的去攻破、实现就可以了。这样不管和外部的供应商还是经销商还是用户、其他合作伙伴,沟通时心里就会有底,而且非常的有条理,和谁见面、什么时候见面、聊什么都会很清晰。

  2、优化大脑,提高沟通效率

  大脑就像电脑的C盘,装的东西多了,电脑就变得卡了,所以把一些资料存放在其他硬盘,能让它运行得更快。该记下来的就记下来,不要让大脑太累了,让大脑做真正该做的事。创业者,每天要做的事情很多,要记的事情也很多。如果你想找外部团队开发app时,如果能用思维脑图把你想说的画出来,不就节省了很多你和软件开发公司沟通的问题了吗?而且更高效有效。

  3、防止记忆或沟通的遗漏

  有创业者想做电商app,自己思考了一些这个项目怎么来做,供应商、经销商、平台、线下等等每一处怎么来做都有了自己的想法,但是在具体项目找软件开发公司来做的时候,总是会有些人问些问题把自己问住,或者沟通不顺畅,又或者总是沟通有遗漏的地方。最后项目开工了,问题就接踵而至,而究其根本就是创业者自己没有想明白。

  所以,如果你现在也有创业的想法,也想做一个app,现在就不妨用脑图软件把自己脑海里想的全部画出来,可能就会发现很多之前没有想到的盲点。有些创业者也是跟你谈想法,拿一个别人的app或者微信、小程序过来,说要做一个一模一样的,但是问到涉及后台的问题,自己又讲不清了。有歌清晰的app开发思路,和郑州app开发公司合作起来就非常简单了。本文由郑州app开发http://www.appsaa.com编辑整理,如需转载请注明出处。

收起阅读 »

在标题栏中设置左右切换按钮功能

在工作中大家可能有这种需求,在一个主页面中镶嵌两个子页面,
这两个子页面可以通过主页面中的一个按钮去控制子页面的切换。
下面有效果图。
==================================================

主页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>市场分布</title>
<link rel="stylesheet" type="text/css" href="../../css/mui.min.css"/>
<link rel="stylesheet" href="../../css/iconfont.css" />
<style type="text/css">

modeImg{

            color: #C1131D;  
        }  
    </style>  
</head>  
<body>  
    <header class="mui-bar mui-bar-nav">  
        <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  
        <h1 class="mui-title">市场分布</h1>  
        <a class="mui-pull-right" id="changeImg"><span id="modeImg" class="mui-icon mui-icon-right-nav iconfont icon-fenbushinengyuanguihuajishu"></span></a>  
    </header>  

    <script type="text/javascript" src="../../js/mui.min.js" ></script>  
    <script type="text/javascript" src="../../js/app.js" ></script>  
    <script type="text/javascript" src="../../js/base.js" ></script>  
    <script type="text/javascript" src="../../js/webviewMapListGroup.js"></script>  
    <script type="text/javascript">  
        var flag = true;  

        mui.init({  
            swipeBack:false  
        });           
        mui.plusReady(function(){  
            var group = new webviewGroup('marketDistribution',{  
                items:[  
                {  
                    id: "marketDistributionList.html",  
                    url: "marketDistributionList.html",  
                    styles:{  
                        top:"40px",  
                        bottom:"0px",  
                        hardwareAccelerated:true //开启硬件加速  
                  },  
                  extras:{}  
                },{  
                    id: "marketDistributionMap.html",  
                    url: "marketDistributionMap.html",  
                    styles:{  
                        top:"40px",  
                        bottom:"0px",  
                        hardwareAccelerated:true //开启硬件加速  
                    },  
                    extras:{}  
                }],  
                onChange: function(obj) {  
                    var index = parseInt(obj.index);  
                    var myimg = document.getElementById("modeImg");  
                    if(index == 1){  
                        //console.log("地图模式="+index);  
                        myimg.classList.remove("icon-fenbushinengyuanguihuajishu");  
                        myimg.classList.add("icon-chazhaobiaodanliebiao");  
                    }else{  
                        //console.log("列表模式="+index);  
                        myimg.classList.remove("icon-chazhaobiaodanliebiao");  
                        myimg.classList.add("icon-fenbushinengyuanguihuajishu");  
                    }  
                }  
            });  
            //图标切换事件  
            document.getElementById("changeImg").addEventListener('tap',function(e) {  
                if(flag){  
                    group.switchTab("marketDistributionMap.html");  
                    flag = false;  
                }else{  
                    group.switchTab("marketDistributionList.html");  
                    flag = true;  
                }  
            });  
        });   
    </script>  
</body>  

</html>
子页面1:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>市场分布-列表</title>
<link rel="stylesheet" type="text/css" href="../../css/mui.min.css"/>
<link rel="stylesheet" href="../../css/iconfont.css" />
</head>
<body>
<div class="mui-content">
<div class="two-nav">
<div id="distributor" data-f="11" class="pan-title mui-pull-left onclick-title">
经销商列表
</div>
<div id="customer" data-f="22" class="pan-title mui-pull-right">
客户列表
</div>
</div>

    </div>  
    <div class="pan-content">  
        <ul class="mui-table-view" id="listCust">  
        </ul>  
    </div>              
</body>  

</html>
子页面2:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<link rel="stylesheet" type="text/css" href="../../css/mui.min.css"/>
<title></title>
</head>
<body>
<div id="allmap"></div>
</body>
<script type="text/javascript" src="../../js/mui.min.js"></script>
<script type="text/javascript" src="../../js/app.js"></script>
<script type="text/javascript" src="../../js/base.js"></script>
</html>

继续阅读 »

在工作中大家可能有这种需求,在一个主页面中镶嵌两个子页面,
这两个子页面可以通过主页面中的一个按钮去控制子页面的切换。
下面有效果图。
==================================================

主页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>市场分布</title>
<link rel="stylesheet" type="text/css" href="../../css/mui.min.css"/>
<link rel="stylesheet" href="../../css/iconfont.css" />
<style type="text/css">

modeImg{

            color: #C1131D;  
        }  
    </style>  
</head>  
<body>  
    <header class="mui-bar mui-bar-nav">  
        <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  
        <h1 class="mui-title">市场分布</h1>  
        <a class="mui-pull-right" id="changeImg"><span id="modeImg" class="mui-icon mui-icon-right-nav iconfont icon-fenbushinengyuanguihuajishu"></span></a>  
    </header>  

    <script type="text/javascript" src="../../js/mui.min.js" ></script>  
    <script type="text/javascript" src="../../js/app.js" ></script>  
    <script type="text/javascript" src="../../js/base.js" ></script>  
    <script type="text/javascript" src="../../js/webviewMapListGroup.js"></script>  
    <script type="text/javascript">  
        var flag = true;  

        mui.init({  
            swipeBack:false  
        });           
        mui.plusReady(function(){  
            var group = new webviewGroup('marketDistribution',{  
                items:[  
                {  
                    id: "marketDistributionList.html",  
                    url: "marketDistributionList.html",  
                    styles:{  
                        top:"40px",  
                        bottom:"0px",  
                        hardwareAccelerated:true //开启硬件加速  
                  },  
                  extras:{}  
                },{  
                    id: "marketDistributionMap.html",  
                    url: "marketDistributionMap.html",  
                    styles:{  
                        top:"40px",  
                        bottom:"0px",  
                        hardwareAccelerated:true //开启硬件加速  
                    },  
                    extras:{}  
                }],  
                onChange: function(obj) {  
                    var index = parseInt(obj.index);  
                    var myimg = document.getElementById("modeImg");  
                    if(index == 1){  
                        //console.log("地图模式="+index);  
                        myimg.classList.remove("icon-fenbushinengyuanguihuajishu");  
                        myimg.classList.add("icon-chazhaobiaodanliebiao");  
                    }else{  
                        //console.log("列表模式="+index);  
                        myimg.classList.remove("icon-chazhaobiaodanliebiao");  
                        myimg.classList.add("icon-fenbushinengyuanguihuajishu");  
                    }  
                }  
            });  
            //图标切换事件  
            document.getElementById("changeImg").addEventListener('tap',function(e) {  
                if(flag){  
                    group.switchTab("marketDistributionMap.html");  
                    flag = false;  
                }else{  
                    group.switchTab("marketDistributionList.html");  
                    flag = true;  
                }  
            });  
        });   
    </script>  
</body>  

</html>
子页面1:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>市场分布-列表</title>
<link rel="stylesheet" type="text/css" href="../../css/mui.min.css"/>
<link rel="stylesheet" href="../../css/iconfont.css" />
</head>
<body>
<div class="mui-content">
<div class="two-nav">
<div id="distributor" data-f="11" class="pan-title mui-pull-left onclick-title">
经销商列表
</div>
<div id="customer" data-f="22" class="pan-title mui-pull-right">
客户列表
</div>
</div>

    </div>  
    <div class="pan-content">  
        <ul class="mui-table-view" id="listCust">  
        </ul>  
    </div>              
</body>  

</html>
子页面2:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<link rel="stylesheet" type="text/css" href="../../css/mui.min.css"/>
<title></title>
</head>
<body>
<div id="allmap"></div>
</body>
<script type="text/javascript" src="../../js/mui.min.js"></script>
<script type="text/javascript" src="../../js/app.js"></script>
<script type="text/javascript" src="../../js/base.js"></script>
</html>

收起阅读 »

急急急 IOS 离线打包 Profile doesn't include thebeta-reports-active

iOS打包

Profile doesn't include the beta-reports-active entitlement and doesn't match the entitlements file's value for the application-identifier entitlement.

继续阅读 »

Profile doesn't include the beta-reports-active entitlement and doesn't match the entitlements file's value for the application-identifier entitlement.

收起阅读 »

MUI HTML5+入门学习视频,看着挺系统,分享一下

视频地址:视频地址

课程目标
1、掌握MUI知识体系结构,能够使用WEB开发相关技术搭建移动端APP前端架构,实现支付宝案例
2、掌握HTML5+ 相关API的使用,可以调用手机或其它设备的功能接口,例如拍照、相册、扫码、通讯录、语音等相关功能接口。
3、掌握Hbuilder的用法,完成应用调试打包
适用人群
有一定前端基础,希望使用web相关技术实现移动端混合应用开发的同学。
课程简介
1、授课过程会对MUI涉及相关知识体系内容进行讲解,内容包含,项目创建、项目调试、第三方图标库引入、MUI窗口对象、MUI事件处理、MUI栅格系统、MUI元素排版、常用UI组件介绍、页面间传值、页面刷新、页面加载、数据获取。

HTML5+相关API讲解:从语法结构讲解HTML5+相关接口,实现手机系统原生功能,例如扫码、拍照、地理位置获取、窗口处理等相关功能。

2、案例介绍:将仿支付宝案例穿插到课程讲解中,结合相应知识一步一步实现支付宝相关界面。

页面效果如图所示:


继续阅读 »

视频地址:视频地址

课程目标
1、掌握MUI知识体系结构,能够使用WEB开发相关技术搭建移动端APP前端架构,实现支付宝案例
2、掌握HTML5+ 相关API的使用,可以调用手机或其它设备的功能接口,例如拍照、相册、扫码、通讯录、语音等相关功能接口。
3、掌握Hbuilder的用法,完成应用调试打包
适用人群
有一定前端基础,希望使用web相关技术实现移动端混合应用开发的同学。
课程简介
1、授课过程会对MUI涉及相关知识体系内容进行讲解,内容包含,项目创建、项目调试、第三方图标库引入、MUI窗口对象、MUI事件处理、MUI栅格系统、MUI元素排版、常用UI组件介绍、页面间传值、页面刷新、页面加载、数据获取。

HTML5+相关API讲解:从语法结构讲解HTML5+相关接口,实现手机系统原生功能,例如扫码、拍照、地理位置获取、窗口处理等相关功能。

2、案例介绍:将仿支付宝案例穿插到课程讲解中,结合相应知识一步一步实现支付宝相关界面。

页面效果如图所示:


收起阅读 »

极光推送集成hbuilder项目

极光推送

1、官方demo
https://github.com/jpush/jpush-hbuilder-demo/tree/masterhttps://github.com/jpush/jpush-hbuilder-demo/tree/master
2、官方API
https://github.com/jpush/jpush-hbuilder-demo/blob/master/API.md
3、官网说明
https://docs.jiguang.cn/jpush/client/client_plugins/

注意:

1、JPush_Support/PushConfig.plist 中配置的 APP_KEY ,是在极光官网申请的APP_KEY
2、极光官网需要从appdev申请推送证书(和普通打包证书不一样https://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/)
3、官方API中的方法与jpush.js中实现的方法有出入,如:
addLocalNotificationForIOS方法不存在
jpush.js中实现的方法是addLocalNotificationIniOS
且jpush.js中call_native方法不存在,应改为callNative

继续阅读 »

1、官方demo
https://github.com/jpush/jpush-hbuilder-demo/tree/masterhttps://github.com/jpush/jpush-hbuilder-demo/tree/master
2、官方API
https://github.com/jpush/jpush-hbuilder-demo/blob/master/API.md
3、官网说明
https://docs.jiguang.cn/jpush/client/client_plugins/

注意:

1、JPush_Support/PushConfig.plist 中配置的 APP_KEY ,是在极光官网申请的APP_KEY
2、极光官网需要从appdev申请推送证书(和普通打包证书不一样https://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/)
3、官方API中的方法与jpush.js中实现的方法有出入,如:
addLocalNotificationForIOS方法不存在
jpush.js中实现的方法是addLocalNotificationIniOS
且jpush.js中call_native方法不存在,应改为callNative

收起阅读 »