• 创建一个getRequest.js文件方便多次使用
/***截取code*/
export const  GetRequest = (data) => {var url = data // 获取url中"?"符后的字符串var theRequest = {}if (url.indexOf('?') !== -1) {var str = url.substr(1)var strs = str.split('&')for (var i = 0; i < strs.length; i++) {theRequest[strs[i].split('=')[0]] = (strs[i].split('=')[1])}}return theRequest.code
}
/***判断ios还是安卓*/
export const  browser = () => {var u = navigator.userAgent, app = navigator.appVersion;var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //gvar isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端if (isAndroid) {//这个是安卓操作系统return true}if (isIOS) {//这个是ios操作系统return false}
}
/***判断微信浏览器还是外部浏览器*/
export const  isWeiXin = () => {var ua = window.navigator.userAgent.toLowerCase();if(ua.match(/MicroMessenger/i) == 'micromessenger'){return true;}else{return false;}
}/***安卓通信*/// 安卓export const  connectWebViewJavascriptBridge = (callback) => {//web调提供方法给app调用if (window.WebViewJavascriptBridge) {callback(WebViewJavascriptBridge)} else {document.addEventListener('WebViewJavascriptBridgeReady', function() {callback(WebViewJavascriptBridge)},false);}}// ios通信export const  setupWebViewJavascriptBridge = (callback) => {// ios处理if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }window.WVJBCallbacks = [callback];var WVJBIframe = document.createElement('iframe');WVJBIframe.style.display = 'none';WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';document.documentElement.appendChild(WVJBIframe);setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)}
  • 当H5主动和app交互时
//先导入方法
import {connectWebViewJavascriptBridge,setupWebViewJavascriptBridge,browser,isWeiXin,GetRequest
} from '../../commons/getRequest';
//交互,需要用的时候触发方法
//使用回调bridge的callHandler方法
//params为传递过去的数据,IfShare为和app约好的交互key名
share () {let params = {type: 'activity_info_customization'}if (browser()) {connectWebViewJavascriptBridge(bridge => {bridge.callHandler('IfShare', params, data => {})})} else {setupWebViewJavascriptBridge(bridge => {bridge.callHandler('IfShare', params, data => {})})}}
  • 当app主动和H5交互时
//先导入方法
import {connectWebViewJavascriptBridge,setupWebViewJavascriptBridge,browser,isWeiXin,GetRequest
} from '../../commons/getRequest';
//直接执行
//使用回调bridge的registerHandler方法if(browser()){connectWebViewJavascriptBridge(bridge => {// 初始化bridge.init((message, responseCallback) => {var data = {'Javascript Responds': 'Wee!'}responseCallback(data)})bridge.registerHandler("shareMajorSuitTop", data => {this.shareshow2 = !this.shareshow2});})}else{setupWebViewJavascriptBridge(bridge => {bridge.registerHandler('shareMajorSuitTop', data => {this.shareshow2 = !this.shareshow2})})}
  • app和H5交互如果需要获取回调需init
connectWebViewJavascriptBridge(bridge => {
//需要bridge.initbridge.init((message, responseCallback) => {var data = {'Javascript Responds': 'Wee!'}responseCallback(data)})bridge.callHandler('IfShare', {}, data => {//data就是回调})
})

Hybrid APP混合开发(H5)相关推荐

  1. Hybrid APP 混合开发模式的选择之路(三)

    原文出处:http://www.cnblogs.com/dailc/p/5930231.html 现在概念上的APP诞生是在Google推出Android,Apple推出iOS后,从这时候开始,就有了 ...

  2. Hybrid APP混合开发的了解和其他两类app的对比

    以前我都是用java做网站的,最近公司需要开发一个app,但是公司又没有Android工程师,所以这个任务就被我们伟大的技术总监分配给我做了,下面我就来解释下目前的app市场行情,由于我们的app只是 ...

  3. Hybrid APP混合开发的一些经验和总结

    写在前面: 转载自 --->博客园  KINGPLUS 1.混合开发概述 Hybrid App主要以JS+Native两者相互调用为主,从开发层面实现"一次开发,多处运行"的 ...

  4. Hybrid APP 混合开发模式简介

    原文出处:http://www.cnblogs.com/yeahui/p/5026587.html 1.1.     APP三种开发模式 智能手机之普及不用多说,手机APP渗投到各个行业:电商(淘宝. ...

  5. Hybrid APP 混合开发模式的选择之路(六:JSBridge---Native代码与JS代码的通信桥梁)

    原文出处:http://www.cnblogs.com/dailc/p/5931324.html JSBridge是Native代码与JS代码的通信桥梁.目前的一种统一方案是:H5触发url sche ...

  6. Hybrid APP 混合开发经验总结《三》

    Hybrid App技术批量制作APP应用与跨平台解决方案 隐藏导航章节导航 1. 前言 2. 定位 3. web App优势 4. 无编程开发 5. 我们可以看看设计者的一个编辑界面,基本offic ...

  7. App混合开发-前端小白理解

    什么是混合app 混合开发的App(Hybrid App)就是嵌一个轻量级的浏览器,一部分原生的功能改为Html5来开发,这部分功能不仅能够在不容升级的情况下动态更新,而且可以在Android或iOS ...

  8. 搭建vue3+cordove的APP混合开发流程

    前言 目前来说主流的App开发方式有三种:Native App(原生APP开发模式).Hybrid App(混合模式移动应用).Web App(嵌入HTML5移动应用).如果项目针对性能以及计算没有特 ...

  9. 谈谈Android App混合开发

    推酷 文章 站点 主题 公开课 活动 客户端 荐 周刊 登录 谈谈Android App混合开发 时间 2015-08-25 20:13:43bxbxbai 原文  http://bxbxbai.gi ...

最新文章

  1. 微软sccm服务器,System Center 2012R2系列之SCCM部署
  2. 创业冲突的五种解决方法是_当创业合伙人发生冲突时,最好的解决办法看这5招...
  3. 原生javascript之实战 轮播图
  4. 初学SpringMVC,使用MVC进行文件上传
  5. LeetCode Hot100 ---- 排序专题
  6. anaconda来创建python环境
  7. Android找工作系列之自定义View
  8. Android Q 不叫 Q,正式命名为 Android 10
  9. wps表格宏被禁用如何解禁_宏被禁用怎么办?excel/word宏已被禁用解决方法
  10. Qt 确认对话框(确定/取消)
  11. Hibernate中枚举Enum类型的映射策略
  12. Pt100铂电阻测温电路设计——
  13. Rockchip平台TP驱动详解
  14. PhoneGap VS. Titanium
  15. IDEA 出现错误:找不到或无法加载主类
  16. php敏感字符串过滤_PHP实现敏感词过滤
  17. python和excel相关的是什么知识点_Python 与 Excel 不得不说的事
  18. autoware下ndt_mapping节点解读
  19. python数据库-6
  20. 人工智能在教育行业的应用

热门文章

  1. crc校验算法程序c语言实现,CRC校验的快速算法的C语言实现
  2. 【矩阵论】2. 矩阵分解——正规分解——正规阵
  3. uniapp下导航栏自定义多按钮单击事件
  4. IBERT IP核使用说明
  5. 小米web前端实习面经
  6. 安卓内存教程技术交流(一):内存特征码读写原理分析
  7. Python/python翻译软件
  8. 酷:BaiduPCS-Go | 百度网盘命令行工具(基于 Go)
  9. 无法启动fireworks,内部发生错误
  10. 国庆节,零代码帮你搞定假期美食菜单