先解释一个名词吧 Hybrid, 相信能看到这篇文章的同学对这个词都不会感到陌生, 可能爱恨交叉的感觉会更强烈一些...

回到正题, Hybrid翻译过来叫混合,混合物,在前端世界里有一个词语叫混合开发便是它,大白话点就是将网页内嵌在原生app中,然后产生一系列的交互

常用的交互方式

  • 双方约定协议(schema)

  • 双方约定函数

双方约定协议(schema)

这里以android 为例,android 中可以通过WebViewClient 的回调方法shouldOverrideUrlLoading ()拦截 url, 然后解析该 url 的协议, 如果检测到是预先约定好的协议,就调用相应方法

协议式的通信适用于单向交互, 客户端想要回传给我们参数比较复杂

代码理解

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head><body><button type="button" id="button1" onclick="callAndroid()">点击调用Android代码</button><script>function callAndroid() {/*约定的url协议为:js://webview?arg1=111&arg2=222*/location.href = "js://webview?arg1=111&arg2=222";}</script>
</body></html>

双方约定函数

简单来说,就是客户端为我们做了一层关系映射, 也可以理解原生app端会向webview暴露一个顶层对象,就像js中的window,这个对象包含web需要但不具备因此由原生实现的一些方法

代码理解

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head><body><!-- 点击按钮则调用jsbridge函数 --><button type="button" id="button1" onclick="jsbridge()">Hello</button>
<script>function jsbridge() {// 由于对象映射,所以调用test对象等于调用Android映射的对象
            test.hello("js调用了原生app暴漏出来jsbridge中的hello方法");}</script>
</body></html>

总结

  • 约定协议(native拦截http协议进行判读是否是定义好的协议)

  • 约定函数(native向webview注入顶级对象)

转载于:https://www.cnblogs.com/jiahuasir/p/10564580.html

H5与客户端交互的方式有哪些? 怎么做?相关推荐

  1. Android内部h5和native交互实现方式

    Android具体实现方式 一.实现方式 a.h5调用native: Android实现h5到native的方式为截获h5调用的特定url,一般url都是http://**这种,为了能够捕获h5调用的 ...

  2. 移动端 h5和原生交互的方式

    一.h5传递给原生WebView的数据协议 传递的是个json字符串: {"id": "random_value","action": &q ...

  3. h5 和native 交互那些事儿

    前端菜菜一枚,写下关于h5 和native 交互那些事情.偏前端,各种理论知识,不在赘述.之前有各位大牛已经写过.我只写代码,有问题,下面留言 /* 关于h5 和native 之间的交互 JSBrid ...

  4. Java 实现 SSH 协议的客户端登录认证方式

    摘自:http://blog.sae.sina.com.cn/archives/333/comment-page-1#comment-37391 简介: 本文首先对 SSH 协议的基础知识作以介绍,然 ...

  5. [原创]前后端交互的方式整理

    前言 本来我只是想整理下前后端如何传输数据这种交互过程,大概流程如下: 前台使用ajax通过get/post等方式提交数据到后端 后端如何获取参数 经过业务处理后,返回前端对应的响应数据 前端接受到响 ...

  6. [转]Android中程序与Service交互的方式——交互方式

    本文转自:http://blog.csdn.net/yihongyuelan/article/details/7216188 上一篇文章:Android中程序与Service交互的方式--综述 简述了 ...

  7. Java 实现 SSH 协议的客户端登录认证方式--转载

    背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...

  8. JAVA与SAP数据交互的方式总结

    JAVA与SAP数据交互的方式总结 RFC方式:Java程序直接通过RFC访问SAP的对象(或称函数,可能叫法不对)     SAP提供了BAPI(Business Application Progr ...

  9. uni-app接入阿里云认证SDK(号码认证服务),App客户端一键登方式

    uni-app接入阿里云认证SDK(号码认证服务)App客户端一键登方式 首先,你需要了解和开通阿里云的号码认证服务,地址:https://help.aliyun.com/product/75010. ...

  10. Raft 集群成员变更、日志压缩、客户端交互

    Raft 集群成员变更.日志压缩.客户端交互 集群成员变更 在集群服务器发生变化时,不能一次性的把所有的服务器配置信息从老的替换为新的,因为,每台服务器的替换进度是不一样的,可能会导致出现双主的情况, ...

最新文章

  1. 难忘的一天——装操作系统(四)
  2. css3动画参数解释
  3. Cisco交换机密码恢复
  4. 黑马程序员之《String 类练习》
  5. 【小白学习C++ 教程】十、C++中指针和内存分配
  6. Java多线程之多线程之间按顺序调用
  7. 如何写一份好的求职简历
  8. 了解和使用DotNetCore和Blazor中的异步编程
  9. Java J2EE中的依赖查找
  10. 如何配置和使用Tomcat访问日志
  11. RxJava Map操作详解
  12. 课程设计题二:7人多数表决器
  13. 信息系统项目管理师 pdf_如何备考信息系统项目管理师?
  14. 用直接分解法求方程组的C语言程序,LU分解法解线性方程组(C语言)
  15. 台式计算机强制关机,台式机如何强制关机
  16. 德国:认真是一种可怕的力量
  17. 支付宝sdk集成,报系统繁忙 请稍后再试(ALI64)
  18. UE4 GamePlay架构
  19. 算法题:SOJ1092: 欧几里得算法
  20. word文档中插入公式的技巧--利用表格

热门文章

  1. Implement Stack using Queues
  2. 《算法导论》读书笔记之第3章 函数的增长
  3. Linux下有趣的命令
  4. 测试“测试”的“测试”
  5. C# datagridview 实现按指定某列或多列进行排序
  6. SqlServer中检查数据表是否存在
  7. ElasticHD Windows环境下安装(转载)
  8. Redis 配置文件详解
  9. linux版Nacos安装、集群配置
  10. oracle 调整缓存大小,设置数据缓冲大小_oracle