html5与oc交互那些事

       html5是最近很火的语言,当然ios手机app作为手机客户端的半边天,自然也要追捧和尝试这种热潮和改变。做为一枚ios程序媛很荣幸的能够接收这样的需求,现将oc与html5交互那些事慢慢捋一捋,一来作为个人的笔记;二来希望能够帮助一些那些正在被html5与oc交互所羁绊小伙伴们。

       一、交互方法:html5与oc交互的方式主要有多种,我选择的是javascriptcore,之所以选择javascriptcore是因为ios与android可以使用相同的设计思路,当然javascriptcore也有自己的弊端,例如只能用于ios7以上的系统,交互的时候html5跳页有个巨大的坑,还要冒着使用私有api被拒的风险。

       二、坑们如下:

        1、将html5文件集成到工程中时,图片不能正常展示,后发现将html5的html与css中相关图片的路径去掉后(即变成img src = a.png)的方式后,图片正常加载

        2、将html5文件集成到工程中时,html5的css样式不能正常显示,后发现将html5的css与js的路径去掉后,css样式正常展示

        3、javascriptcore的坑:每个html5页面可单独加载,但是连续加载多个页面(从第一个页面开始连续跳转)却无法实现,这个问题困扰我一整天,个人认为这是html5与oc交互最坑的地方,幸好有度娘,几乎搜到词穷,终于找找了一篇救命的文章,https://github.com/TomSwift/UIWebView-TS_JavaScriptContext.git;尝试过这位大神的方法后,这个坑算是暂且填平了,坑是平了,但是这个方法涉及到了苹果的私有api,有很大的被拒风险,但是也有一些用这个方法的小伙伴顺利通过苹果的审核,生怕自家的app折在这个方法上,于是乎用以前自己上过架的app拿来试水,集成了一部分html5的页面后,结果顺利通过了,那个happy啊!自此此坑填平已。

        4、html5与oc交互这种跨平台的项目,最大的弊端就是,使用跨平台后,原生app界面十分的卡,尤其是同一个页面加载时同时出现交互与网络请求时,卡是在所难免的,毕竟是交互,为提高用户体验,在web上做了透明处理,在交互与获取数据时,做成了淡入淡出的界面,用户体验有很大提高

        三、oc与html5交互心得:

         1,不是所有界面都适合做成html5:

         应用中使用html5的部分一般是那些需要实时更新的界面部分,一些固定的界面是没必要用html5的,html5毕竟是非手机原生的东西,用户体验肯定不及原生,一味的使用html5,个人认为不可取。

         2,交互不要太频繁:

        刚开始认识html5交互时,个人认为原生与html5的交互只做两次就够了,第一次即原生跳入html5的时候;第二次是html5跳到原生的时候,可是毕竟本家的app是一个需要金融软件,需要各种加密啊,html5来不及这套加密,那只能借用原生的那一套东西,所以自己app现在很坑的就是html5每个页面的跳转都要原生的来控制,并且html5每个页面的数据都要由原生的来传送,当然了,html5每个页面的返回状况也是原生来控制的,为了能控制返回,每页的html5的json数据都必须保存在本地,当然如果有用户交互例如输入密码等操作时,客户端还要将用户输入内容也保存在本地;这样的交互太过于频繁,经常出现卡死的状况。

      

你可能感兴趣的:(html5与oc交互那些事)