收藏本站
51Code Android开发培训Banner
您所在的位置:51Code首页 > 资料精选 > 学习资料 > 【学习资料】iOS开发之Objective-C与JavaScript交互

【学习资料】iOS开发之Objective-C与JavaScript交互

      发布时间:2016年02月23日 14:25分    来源:51Code采编    关键词:ios开发         | 上一篇 | 下一篇 |


 

iOS开发之Objective-C与JavaScript交互

 

      最近公司的运营瞎搞了个活动,其活动要服务端提供数据支持,web前端在微信公众账号内作为主要的运营阵地,而iOS、Android要提供相应的入口及页面进行配合。一个活动,动用了各个端的程序猿。而在这里面技术方面主要就是涉及到web端和服务端的交互,web前端和iOS、Android的交互。本人作为一个iOS开发者,今天就聊聊web、iOS、Android三端的交互,其实在说明白一点就是方法的互相调用而已。这里主要讲解iOS开发。Android会稍微提一下,仅作参考。

 

iOS开发之Objective-C与JavaScript交互

 

图示1_此篇文章的逻辑图

      概述

 

      iOS原生应用和web页面的交互大致上有这几种方法iOS7之后的JavaScript Core、拦截协议、第三方框架Web View JavaScript Bridge、iOS8之后的WK Web View在这里主要讲解JavaScript Core和拦截协议这两种办法。Web View JavaScript Bridge是基于拦截协议进行的封装。学习成本相对JavaScript Core较高,使用也不如JavaScript Core方便本文不做叙述。WK Web View是iOS8之后推出的,还没有成为主流使用,所以本篇文章也不做详细叙述。

 

      1.Objective-C执行JavaScript代码

 

      用此方法去执行大段的JavaScript代码是没什么必要的,但是有些小场景用起来还是比较顺手和实用的。

 

      2.JavaScriptCore

 

       iOS 7之后苹果推出了Java Script Core这个框架,从而让web页面和本地原生应用交互起来非常方便,而且使用此框架可以做到Android那边和iOS相对统一,web前端写一套代码就可以适配客户端的两个平台,从而减少了web前端的工作量。

 

      3.web前端

 

      在三端交互中,web前端要强势一些,一切传值、方法命名都按web前端开发人员来定义,让另外两端去做适配。在这里以调用摄像头和分享为例来详细讲解,测试网页代码取名为test.html。

 

      ●test.html代码解释

 

      可能有些同学对web前端的一些知识不太熟悉,稍微对这段代码做下解释,先说Toyun是iOS和Android这两边在本地要注入的一个对象,充当原生应用和web页面之间的一个桥梁。页面上定义了两个按钮名字分别为Call Camera和Share。点击CallCamera会通过Toyun这个桥梁调用本地应用的方法- (void)callCamera,没有传参;而点击Share会先调用本文件中的JavaScript方法callShare这里将要分享的内容格式转成JSON字符串格式(这样做为了适配Android,iOS可以直接接受JSON对象)然后再通过Toyun这个桥梁去调用原生应用的- (void)share: ( NSString *)shareInfo方法这个是有传参的,参数为shareInfo。