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常用代码相关推荐

  1. 移动端H5混合开发设置复盘与总结

    此篇接上一篇: 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案 https://www.cnblogs.com/buoge/p/9346699.html app 场布设置已经上线了, ...

  2. androidh5混合开发_Android H5混合开发(3):原生Android项目里嵌入Cordova

    前言 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cordova项目并添加Android平台,把我们的安卓项目导入Android平 ...

  3. Meetup 回顾 | 多场景下的 H5 混合开发与 Flutter 多平台应用开发

    9 月 7 日,RTC 开发者社区与北京 GDG 联合主办的「前端技术专场」在北京中关村圆满结束啦.周末北京的天气再热,也比不上社区小伙伴们的学习心气更热,现场 100 多位开发者在 3 位演讲人的分 ...

  4. 混合开发与移动端--H5混合开发、H5页面的开发布局、开发注意事项、H5与原生(安卓)交互、webpack打包优化解决方案、H5调试工具、webview

    H5混合开发 混合开发.原生开发.H5开发的区别: 简述:主流APP:原生APP.H5(webapp).混合APP,相对应的定制研发即原生开发.H5开发.混合开发 原生APP开发优缺点: 可以访问手机 ...

  5. Hybird混合开发APP初学体验

    引用别人的Hybird经验链接 以下为结合自己的项目经验总结 一.react native 它最大的特点就是完全用 JavaScript 进行应用的开发,但是最终会渲染成原生的组件.多端代码复用. 因 ...

  6. 前端MUI+H5+HBuilderX开发APP(IOS,android),后台Springboot,java学习与实践文章,更新中(二)

    前端MUI+H5+HBuilderX开发APP(IOS,android),后台Springboot,项目搭建,图标设置等,更新中(二) 新建我的第一个APP manifest.json: 图标设置: ...

  7. ioswebview混编_iOS 原生和H5混合开发总结

    最近一段时间开发一个App,由于时间紧采用原生+H5混合开发,这里记录一下开发过程中遇到的问题. 之前在项目中使用过WebViewJavascriptBridge,使用起来很简单,但是这次项目中没有使 ...

  8. Android支付宝错误码62009,hb混合开发app 微信支付提示支付宝62009未知错误

    问题描述 hb混合开发app 微信支付提示支付宝62009未知错误 问题出现的环境背景及自己尝试过哪些方法 真机模拟测试 相关代码 获取通道 mounted(){ plus.payment.getCh ...

  9. H5混合开发二维码扫描教程之大圣众娱十人牛牛源码搭建架设

    今天用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底,于是晚上回家开始网上各处找方案. ...

最新文章

  1. linux日志按天切割,Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录
  2. ros安装orocos造成工作空间编译不通过
  3. 【Python学习系列二】Python默认编码和Eclipse环境的冲突问题
  4. HFSS安装提示failed to check out license during initialization,怎么解决?
  5. 中小企业CRM评测-用户交互_易客
  6. 微信php实例代码_php微信公众平台示例代码分析(二)
  7. numpy生成服从特定分布(制定分布)的数据
  8. 一行一个链接代码_AI最优论文+代码查找神器:966个ML任务、8500+论文任你选
  9. 如何减少mysql的连接时间_mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案...
  10. SQL 常用语句大全
  11. Android中Audio框架
  12. Hbase API实现倒序查询
  13. 西门子PLC多个CPU之间通讯简介
  14. 一加3t刷机后还卡_一加3t刷机工具大全+3个ROM
  15. 蜜罐 计算机术语,检测虚机和蜜罐方法的概念 -电脑资料
  16. LSB信息隐藏的卡方分析
  17. mybatis的selectOne分享
  18. matlab postscript,Postscript软件特点全面解析
  19. bam文件处理 转fq
  20. 沈国军标签:零售业叛徒 马云的朋友 无所不能的怪兽

热门文章

  1. 信用卡申请终于到北京总部了,哎,等的好辛苦呀!
  2. 深度linux系统 -- 三步安装nodejs
  3. 二硫化钼量子点掺杂的ZnO纳米粒子(MoS2@ZnO)|负载氟西汀MoS2二硫化钼纳米片|超顺磁性碳化钽(Ta4C3-IONP-SPs)纳米复合材料
  4. 数据库中删除数据常用命令-truncate、drop、delete
  5. 第一范式 第二范式 第三范式理解
  6. 有关中国服装制造业转型升级的看法
  7. alexa排名_PHP Alexa排名提取器类
  8. CentOS下利用Docker部署Surging
  9. sigmoid、tanh、relu激活函数
  10. 一位80后闽商和他的创业故事