H5混合开发app常用代码
1、Android与H5互调可以让我们的实现混合开发,至于混合开发就是在一个App中内嵌一个轻量级的浏览器(高性能webkit内核浏览器),一部分原生的功能改为Html 5来开发。然后这个浏览器又封装了一个WebView控件((网络视图))来加载显示网页,展现html页面。需要注意的是,当H5内嵌在app里面的时候,app那边有很高的权限来控制H5页面上的操作,比如app可以直接调用html里面的函数方法,可以禁止本地存储localStorage和cookie!!从而使H5页面使H5上用的相应功能失效!!!
2、H5跟app交互实例:
我们这边使用app在内嵌H5页面的浏览器内核上带一个标识,这边是加pop=1,如果浏览器中带有pop=1,那么就是嵌在app端的页面,然后暴露方法app_share()给app,里面传参数,可把一些常见的交互规范成固定文档,例如
1.登录:app_login
2、分享:app_share
*分享文案内容的传值须转换成json格式
3、客服:app_service
4、头部返回:app_go_back
5、产品详情(包括后续购买):app_detail
*详情须传产品编号
6、返回首页:app_go_home
具体事例如下:
var sharedata={
event_key: "{$act_data.event_key}",
type:'0',
number:'0'
}
var u = navigator.userAgent; //获取内嵌浏览器信息
var isAndroid = u.indexOf('Android') > -1 ||u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (u.indexOf("pop=1") < 0) {
}else{
var isAndroid = u.indexOf('Android') > -1 ||u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isAndroid) {
window.android.app_share(JSON.stringify(sharedata));
} else {
window.app_share(JSON.stringify(sharedata));
}
}
在web移动端中头部需要显示,而嵌在app里面的时候,需要隐藏,那么一开始就让头部隐藏,然后判断如若是移动端就让其显示,优先考虑app端,在app端的H5页面加载速度比较慢,不然会出现闪现
3、在H5页面点击某个按钮唤起app,要是下载app则打开app,没有的话跳转提示下载!!!
<a id=“openApp”>前往app查看</a>
// 手机有没有下载app判断begin var ua = navigator.userAgent.toLowerCase(); var t; var config = {/*scheme:必须*/scheme_IOS: 'com.xmgztbw.bgbapp://',scheme_Adr: 'bgbapp://myapp/bgzx?param=1',download_url: 'http://a.app.qq.com/o/simple.jsp?pkgname=com.gongzhong',timeout: 3000 };function openclient() {var startTime = Date.now();if(ua.indexOf('os') > 0){window.location = config.scheme_IOS;}else{var ifr = document.createElement('iframe'); ifr.src = ifr.src = config.scheme_Adr;ifr.style.display = 'none';document.body.appendChild(ifr);}var t = setTimeout(function() {var endTime = Date.now();if(!startTime || endTime - startTime<config.timeout + 800) {window.location.href= config.download_url;} else {}}, config.timeout);window.onblur= function(){clearTimeout(t);} } window.addEventListener("DOMContentLoaded", function() {document.getElementById("openApp").addEventListener('click', openclient, false);}, false); // 手机有没有下载app判断end
4、不同客户端判断,赋予不同平台号
//获取平台号 Vue.prototype.getPlatform =function (){let u=navigator.userAgent;if(u.indexOf("pop=1") < 0){let userAgentInfo=navigator.userAgent.toLowerCase();if(userAgentInfo.indexOf('micromessenger') != -1) {return 4; //微信端}else{return 3; //浏览器端 }}else{var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端if(isAndroid) {return 2;}else{return 1;}}}
5、在浏览器中打开H5页面,点击某个按钮跳转微信
$(".btn").on("click",function(){window.location.href="weixin://"
})
6、H5页面要在第三方app里面打开微信时,H5页面需要跟app交互,不能直接跳链接!
应用场景
点击我要参与按钮时,如果改H5页面在微信打开,直接跳活动首页链接,如果在app里面就打开app,在浏览器也是打开微信
var u = navigator.userAgent;$(".wycy-btn").click(function(){if (u.indexOf("pop=1") < 0) {var ua = navigator.userAgent.toLowerCase();//获取判断用的对象if (ua.match(/MicroMessenger/i) == "micromessenger") {//在微信中打开window.location.href="{:U('index')}";}else{//在浏览器中打开微信;window.location.href="weixin://";}}else{//在app里面打开微信var isAndroid = u.indexOf('Android') > -1 ||u.indexOf('Adr') > -1; //android终端var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端if(isAndroid) { window.android.app_pasteboard();//打开微信交互} else{window.app_pasteboard();}}})
常遇见问题
常见问题一
为了用户能得到快速的问题处理解决,你第一时间收集到用户的以下信息
1、用户使用的APP版本、
2、使用的手机类型,(如苹果手机或是安卓手机 、苹果6或是7 魅族手机或是华为等信息)
3、苹果手机IOS系统版本
4、用户登录的手机账号、
5、用户使用哪个功能模块出现问题、报错信息是什么 (叫用户以截图凭据)
问题一:app支付成功后跳转成功页面,出现红包金额错误,
常见问题二
ios中的图片会分批加载,需要用到的时候才加载,不需要的时候,就暂时不会加载,所以当点击的时候切换图片的显示隐藏,第一次出现的图片会闪一下,解决方法,用一个div将需要用到的图片包裹起来,提前加载图片,然后设置该div的样式为
opacity=0;
转载于:https://www.cnblogs.com/qdlhj/p/9239313.html
H5混合开发app常用代码相关推荐
- 移动端H5混合开发设置复盘与总结
此篇接上一篇: 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案 https://www.cnblogs.com/buoge/p/9346699.html app 场布设置已经上线了, ...
- androidh5混合开发_Android H5混合开发(3):原生Android项目里嵌入Cordova
前言 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cordova项目并添加Android平台,把我们的安卓项目导入Android平 ...
- Meetup 回顾 | 多场景下的 H5 混合开发与 Flutter 多平台应用开发
9 月 7 日,RTC 开发者社区与北京 GDG 联合主办的「前端技术专场」在北京中关村圆满结束啦.周末北京的天气再热,也比不上社区小伙伴们的学习心气更热,现场 100 多位开发者在 3 位演讲人的分 ...
- 混合开发与移动端--H5混合开发、H5页面的开发布局、开发注意事项、H5与原生(安卓)交互、webpack打包优化解决方案、H5调试工具、webview
H5混合开发 混合开发.原生开发.H5开发的区别: 简述:主流APP:原生APP.H5(webapp).混合APP,相对应的定制研发即原生开发.H5开发.混合开发 原生APP开发优缺点: 可以访问手机 ...
- Hybird混合开发APP初学体验
引用别人的Hybird经验链接 以下为结合自己的项目经验总结 一.react native 它最大的特点就是完全用 JavaScript 进行应用的开发,但是最终会渲染成原生的组件.多端代码复用. 因 ...
- 前端MUI+H5+HBuilderX开发APP(IOS,android),后台Springboot,java学习与实践文章,更新中(二)
前端MUI+H5+HBuilderX开发APP(IOS,android),后台Springboot,项目搭建,图标设置等,更新中(二) 新建我的第一个APP manifest.json: 图标设置: ...
- ioswebview混编_iOS 原生和H5混合开发总结
最近一段时间开发一个App,由于时间紧采用原生+H5混合开发,这里记录一下开发过程中遇到的问题. 之前在项目中使用过WebViewJavascriptBridge,使用起来很简单,但是这次项目中没有使 ...
- Android支付宝错误码62009,hb混合开发app 微信支付提示支付宝62009未知错误
问题描述 hb混合开发app 微信支付提示支付宝62009未知错误 问题出现的环境背景及自己尝试过哪些方法 真机模拟测试 相关代码 获取通道 mounted(){ plus.payment.getCh ...
- H5混合开发二维码扫描教程之大圣众娱十人牛牛源码搭建架设
今天用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底,于是晚上回家开始网上各处找方案. ...
最新文章
- linux日志按天切割,Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录
- ros安装orocos造成工作空间编译不通过
- 【Python学习系列二】Python默认编码和Eclipse环境的冲突问题
- HFSS安装提示failed to check out license during initialization,怎么解决?
- 中小企业CRM评测-用户交互_易客
- 微信php实例代码_php微信公众平台示例代码分析(二)
- numpy生成服从特定分布(制定分布)的数据
- 一行一个链接代码_AI最优论文+代码查找神器:966个ML任务、8500+论文任你选
- 如何减少mysql的连接时间_mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案...
- SQL 常用语句大全
- Android中Audio框架
- Hbase API实现倒序查询
- 西门子PLC多个CPU之间通讯简介
- 一加3t刷机后还卡_一加3t刷机工具大全+3个ROM
- 蜜罐 计算机术语,检测虚机和蜜罐方法的概念 -电脑资料
- LSB信息隐藏的卡方分析
- mybatis的selectOne分享
- matlab postscript,Postscript软件特点全面解析
- bam文件处理 转fq
- 沈国军标签:零售业叛徒 马云的朋友 无所不能的怪兽
热门文章
- 信用卡申请终于到北京总部了,哎,等的好辛苦呀!
- 深度linux系统 -- 三步安装nodejs
- 二硫化钼量子点掺杂的ZnO纳米粒子(MoS2@ZnO)|负载氟西汀MoS2二硫化钼纳米片|超顺磁性碳化钽(Ta4C3-IONP-SPs)纳米复合材料
- 数据库中删除数据常用命令-truncate、drop、delete
- 第一范式 第二范式 第三范式理解
- 有关中国服装制造业转型升级的看法
- alexa排名_PHP Alexa排名提取器类
- CentOS下利用Docker部署Surging
- sigmoid、tanh、relu激活函数
- 一位80后闽商和他的创业故事