
第三方登陆微信真机调试成功,发布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开发沟通什么
对于目前郑州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

周报(20180330):今天你打包了么?
热门话题
本周最热(悲)门(伤)的话题,就是云端打包了。
- 打包时一直显示“正在制作安装包”:本周不知道为什么,白天打包的任务尤其是安卓比较多,难道年后第一波发版潮来了?不是服务器出问题了,请各位小伙伴不要慌张,耐心排队等待。
- 【报Bug】微信登录 auth.login 在华为手机上出现闪退:云端打包的问题,已经修复并且更新至 Alpha 版打包机,会尽快更新至正式版。
- 生成本地打包资源ios的,xcode运行项目启动页后广告怎么关闭?:iOS 本地(离线)打包始终有开屏广告的问题,已经修复并且更新了 SDK。
- 使用hello 5+ 创建项目 二维码扫描成功后闪退:确认一下 manifest.json 中权限配置部分是否勾选了 android.permission.VIBRATE。
- 【报Bug】微信H5支付问题:其实不是 bug,而是页面组没有配置好,导致微信的校验无法通过。wap2app 项目中,需要认真处理页面组的配置,才会避免更多此类问题。
开源项目
uni-migration:统一转换器,可实现将小程序项目转换为快应用、UniApp项目。
无论是使用 HBuilderX 还是 uni-migration,转换或运行时出现问题后,请尽可能提供可以重现问题的示例项目。如果因为是公司的项目,请向领导反馈后提供一个简单的 demo,否则拿不到代码没有办法定位问题。
关于应用中的广告,下载广告演示示例 App 体验 DCloud 广告平台的广告。除了这个示例里面的广告形式外,如果出现其它悬浮或者插入的广告多半是被劫持了。
问题清单
- 小程序转快应用一直有问题:这种情况,请尽可能提供示例项目。
- http://dev.dcloud.net.cn/ 页面我创建的应用删除不掉,怎么联系管理员?:按照帖子中的回复,邮件反馈。
- UNIAPP开发遇到一下几点问题:UniApp 还在不断完善中,欢迎各位小伙伴体验并反馈。
- 关于mui框架跨域问题,很多人说在浏览器上,无法调用后台,在真机上调试可以,但是,我用Android、IOS都试过了,无法调用后台接口。:又是跨域,动动手搜索一下有很多答案的。
- 怎么调用支付宝沙箱环境:5+API 不支持沙箱环境,一分钱大法好。
- wap2app如何整合腾讯X5内核浏览:这个真的不支持,开发中遇到问题重要的是想办法解决。
iOS 近期问题
- iOS审核不通过,使用了私有APIxxxx:按照帖子中的回复,尝试发邮件解释下。
再说两句
HBuilder为什么没有Linux版:这个问题真的是老黄历了,但总想说的什么。每个人有自己的想法和意愿,DCloud 无法满足所有开发者的需求。如果你真的认同 DCloud,喜欢 HBuilder,请移步需求墙:http://dev.dcloud.net.cn/wish/。
最后
本周的报告就是这些,希望能对大家有所帮助。同时,也希望更多的小伙伴在社区分享自己的经验心得,交流学习。
祝大家周末愉快。
热门话题
本周最热(悲)门(伤)的话题,就是云端打包了。
- 打包时一直显示“正在制作安装包”:本周不知道为什么,白天打包的任务尤其是安卓比较多,难道年后第一波发版潮来了?不是服务器出问题了,请各位小伙伴不要慌张,耐心排队等待。
- 【报Bug】微信登录 auth.login 在华为手机上出现闪退:云端打包的问题,已经修复并且更新至 Alpha 版打包机,会尽快更新至正式版。
- 生成本地打包资源ios的,xcode运行项目启动页后广告怎么关闭?:iOS 本地(离线)打包始终有开屏广告的问题,已经修复并且更新了 SDK。
- 使用hello 5+ 创建项目 二维码扫描成功后闪退:确认一下 manifest.json 中权限配置部分是否勾选了 android.permission.VIBRATE。
- 【报Bug】微信H5支付问题:其实不是 bug,而是页面组没有配置好,导致微信的校验无法通过。wap2app 项目中,需要认真处理页面组的配置,才会避免更多此类问题。
开源项目
uni-migration:统一转换器,可实现将小程序项目转换为快应用、UniApp项目。
无论是使用 HBuilderX 还是 uni-migration,转换或运行时出现问题后,请尽可能提供可以重现问题的示例项目。如果因为是公司的项目,请向领导反馈后提供一个简单的 demo,否则拿不到代码没有办法定位问题。
关于应用中的广告,下载广告演示示例 App 体验 DCloud 广告平台的广告。除了这个示例里面的广告形式外,如果出现其它悬浮或者插入的广告多半是被劫持了。
问题清单
- 小程序转快应用一直有问题:这种情况,请尽可能提供示例项目。
- http://dev.dcloud.net.cn/ 页面我创建的应用删除不掉,怎么联系管理员?:按照帖子中的回复,邮件反馈。
- UNIAPP开发遇到一下几点问题:UniApp 还在不断完善中,欢迎各位小伙伴体验并反馈。
- 关于mui框架跨域问题,很多人说在浏览器上,无法调用后台,在真机上调试可以,但是,我用Android、IOS都试过了,无法调用后台接口。:又是跨域,动动手搜索一下有很多答案的。
- 怎么调用支付宝沙箱环境:5+API 不支持沙箱环境,一分钱大法好。
- wap2app如何整合腾讯X5内核浏览:这个真的不支持,开发中遇到问题重要的是想办法解决。
iOS 近期问题
- iOS审核不通过,使用了私有APIxxxx:按照帖子中的回复,尝试发邮件解释下。
再说两句
HBuilder为什么没有Linux版:这个问题真的是老黄历了,但总想说的什么。每个人有自己的想法和意愿,DCloud 无法满足所有开发者的需求。如果你真的认同 DCloud,喜欢 HBuilder,请移步需求墙:http://dev.dcloud.net.cn/wish/。
最后
本周的报告就是这些,希望能对大家有所帮助。同时,也希望更多的小伙伴在社区分享自己的经验心得,交流学习。
祝大家周末愉快。

setJsFile与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开发认为这些很重要
人的记忆有限,不可能能记住所有的事,特别是面对创业。就拿郑州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
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