选型标准

·写代码的难易度
·编译的难易度
·上架和推广的难易度
·小程序和原生应用的不同等方面

技术方案

WebView

入门知识

我们通常是使用浏览器浏览网页,你很清楚的知道你正在使用浏览器,要么是PC客户端,要么是手机上的app。但是webview是一个嵌入式的浏览器,是嵌入在原生应用中的,你可能都意识不到你在使用浏览器。
传统浏览器分为两个部分,UI(地址栏、导航栏)和浏览器搜索引擎。webview就是原生应用中的浏览器引擎。
webview只是一个可视化的组件,是作为原生app的视觉部分。
用webview展示的内容是不需要存储在本地的,可以直接从服务器获取。
这种灵活性打开了浏览器端的web应用和希望展示在原生应用中的web应用代码直接可以重用的世界。
运行在webview中的JS代码有能力调用原生系统的API,没有传统浏览器沙箱的限制。
沙箱的存在是因为,你永远不能完全信任加载的web内容,所以不能允许它调用原生的系统API。而在webview中开发人员通常可以完全控制加载的内容,恶意代码进入并在设备上造成混乱的可能性很低。
在webview中,js代码可以跟原生应用代码相互通信,也可以调用原生API集成酷炫的系统级功能,如传感器、存储、日历、联系人等。
用法
作为app内置浏览器,显示链接的内容
用来显示广告
完全承载app内的所有交互。从技术角度看这些仍是原生应用,但它做的唯一原生操作就是托管webview,这种应用被称为混合应用。从部署和更新的角度来看,混合应用非常方便。
作为原生应用的扩展。许多原生应用会提供加载项和扩展程序来扩展其功能,由于web技术的简单性和强大,这些加载项和扩展通常以HTML、CSS、JS而不是C++,C#或其他来构建。
webview的精髓
webview其实只是一个在应用中设置好位置和大小的浏览器,而且不会放置任何花哨的UP。
在大多数情况下,除非你调用了原生API,否则不必在webview中专门测试web应用。

进阶知识
webview是我们前端开发从PC端演进到移动端的一个重要载体,现在大家每天使用的App,webview都发挥着它的重要性。

适用场景
提到应用场景,大家最直观的能想到一些APP内嵌的页面,为我们提供各种各样的交互。
其实webview的应用场景远远不止这些,其实在一些pc的软件里,和我们交互的也是我们的html页面,只是穿着webview的衣服。
另外,还有一些网络机顶盒里的交互,也是webview在和我们打交道,比如一些早期的IPTV里的EPG都是运行在webview里的,他们基于webkit内核,尽管我们使用的交互方式是遥控器。
与app native的交互
其实目前使用频率最多的,还是客户端内嵌的webview,小到我们地铁里用手机看的一篇公众号文章,大到我们使用app中的一些重要交互流程,其实都是webview打开m页去承接的。那么,到底m页怎么和native去交互呢?
目前javascript和客户端(native)交互的常见方式有两种,一种是通过JSBridge的方式,另一种是通过schema的方式。
1.JSBridge
当我们在native内打开m页,native会在全局的windows下,为我们注入一个bridge。这个bridge里面,会包含我们与native交互的各种方法,比如判断第三方app是否安装,获取网络信息等功能。
(ios和android端不同)
2.schema url
如果说bridge的方式是只能在native内部交互,那么schema url不仅可以在native内交互,也是可以跨app来交互的。schema也是目前我们转转使用的主要方式,它类似于一个伪协议的链接(也可以叫做统跳协议)
在webview里,当m页发起schema请求时,native端会去进行捕获。
(ios和Android不同)
通过schema的方式可以进行跨端交互。
在native中,会通过schema找到相匹配的app。其中ios不可以重复,安卓可以重复,遇到重复情况时,会弹窗让用户选择其中之一。

手机app开发可选技术——webview相关推荐

  1. 手机app开发可选技术——React Native

    百度百科 React Native是Facebook于2015年开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架React在原生移动应用平台的衍生产物,支持IOS和安卓两大平台.RN ...

  2. python手机app开发_H5 手机 App 开发入门:技术篇

    新人学习手机 App 开发,一开始总要选择一条学习路径. 如果你熟悉 Java 语言,可以学习安卓开发:如果熟悉脚本语言(比如 Python 或 Ruby),可以学习 Swift 语言,进行 iOS ...

  3. (转载)H5 手机 App 开发入门:技术篇

    H5 手机 App 开发入门:技术篇 一.手机 APP 的技术栈 二.WebView 控件 三.原生技术栈 3.1 Xcode 3.3 Android Studio 四.混合技术栈 4.1 框架种类 ...

  4. H5 手机 App 开发入门:技术篇

    新人学习手机 App 开发,一开始总要选择一条学习路径. 如果你熟悉 Java 语言,可以学习安卓开发:如果熟悉脚本语言(比如 Python 或 Ruby),可以学习 Swift 语言,进行 iOS ...

  5. 手机App开发的基础概念

    App概念: 就是手机上的应用程序,点击图标就能运行,但是它们的底层技术不一样.按照开发技术,App 可以分成三大类. 原生应用(native application,简称 native App) W ...

  6. (转载)H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 一.H5 的含义 二.原生应用 2.1 概念 2.2 优点 2.3 缺点 三.Web 应用 3.1 概念 3.2 优点和缺点 3.3 Web APP 的劣势 3. ...

  7. H5 手机 App 开发入门:概念篇

    手机现在是互联网的最大入口.根据<中国互联网报告>,手机网民已经超过8亿,人均每天上网三个多小时. 毫不奇怪,手机应用软件(mobile application,简称 mobile App ...

  8. 优质手机APP开发公司的特点

    最近自媒体平台封号特严重,获得上亿投资的大号都被封了,或许做自己的APP会是一个好选择.想在众多的app中脱颖而出.希望手机APP获得成功,则必须聘请专业手机APP开发公司.您必须明智地选择公司,因为 ...

  9. android和chrome的发展与未来[j].移动通信,基于Android手机app开发与设计 毕业设计 开题报告...

    基于Android 手机app开发 电子同学录的设计与开发 四.检索与本课题有关参考文献资料的简要说明 [1] 成刚编. Eclipse 从入门到精通[M] . 北京:清华大学出版社,2005 [2] ...

最新文章

  1. 【linux】Valgrind工具集详解(五):命令行详解
  2. MongoDB复制集(Replication Sets)介绍
  3. 测量角速度_锡膏的粘度如何正确鉴别和精确测量?
  4. Spring学习笔记八--Bean生命周期和后置处理器
  5. java中过滤器、监听器、拦截器的区别
  6. YunTable 0.1版正式发布!!!(转载)
  7. 从一百篇文章中总结出的需求分析四步法
  8. java泛型程序设计——Varargs 警告+不能实例化类型变量
  9. SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用
  10. vue 多个回调_Vue 进阶面试必问,异步更新机制和 nextTick 原理
  11. Android/Linux线程死锁demo分析
  12. leetcode 175. Combine Two Tables
  13. php 扩展jpeg,php重新编译,gd扩展支持jpeg文件-Go语言中文社区
  14. php递归函数名字,php递归函数
  15. android+背景虚化,android背景虚化
  16. 【vlan间通信的小玩法】在三层交换机上做ospf
  17. D-脱硫生物素dethiobiotinCAS号:533-48-2
  18. 很方便的密码加密算法BCrypt
  19. 二代旅游CMS网站管理系统使用手册(三)--计调线路团期录入
  20. less中的变量 单位问题

热门文章

  1. Python中的sum函数.sum(axis = 1)
  2. 【暑假自学C语言】 --8 练习题详解(分段函数)
  3. Mac 相见恨晚的神器-小众-用了就丢不掉的 软件
  4. mysql集群搭建与总结
  5. 假如从来没有开始,你怎么知道自己会不会很爱很爱那个人呢
  6. 基于RFID技术的电力计能表仓储管理系统—铨顺宏
  7. http://www.360doc.com/content/07/0103/19/16773_317325.shtml
  8. MySQL笔试和面试题
  9. 防水蓝牙耳机哪个好?蓝牙耳机200到400推荐
  10. 单纯形表格法求最值详解-组合数学