iOS7之后JavaScript与Objective-C之间的通信
2015-09-06 10:29
549 查看
http://www.cocoachina.com/ios/20150906/13320.html
最近公司用Ping++集成了第三方支付,并且微信端也集成了这个功能,而微信付款时需要调用原生的支付宝支付或者微信支付,由此引出了JS调用OC方法的问题。
Js -> Native
以前传统的做法是根据url字符串来做特殊匹配,从而完成一些特定的工作譬如
但是iOS7之后, iOS 7 引入了 JavaScriptCore 库,它把 WebKit 的 JavaScript 引擎用 Objective-C 封装,让JavaScript与Objective-C之间的通信变的非常简单。首先导入JavaScriptCore.framework框架, 然后
JS端:
OC端:
.h中引入头文件,并实现协议和对应的方法
.m中在webViewDidFinishLoad中给context赋值,并把self指针给TXBB_IOS_SDK,JS端即可经过TXBB_IOS_SDK.callPay调用起Native方法
Native -> Js
OC端调用JS代码则只需通过context调用evaluateScript方法即可,下列代码即会用JS显示Hello World,而在iOS7.0之前你可能通过[webView stringByEvaluatingJavaScriptFromString:@"document.title"]方法来获取WebView的title。
最后
JS和OC通信还有个非常著名的第三方库WebViewJavascriptBridge,如果你的项目需要支持iOS6之前的系统,你可以通过这个项目实现JS和OC的通信。
最近公司用Ping++集成了第三方支付,并且微信端也集成了这个功能,而微信付款时需要调用原生的支付宝支付或者微信支付,由此引出了JS调用OC方法的问题。
Js -> Native
以前传统的做法是根据url字符串来做特殊匹配,从而完成一些特定的工作譬如
JS端:
.h中引入头文件,并实现协议和对应的方法
.m中在webViewDidFinishLoad中给context赋值,并把self指针给TXBB_IOS_SDK,JS端即可经过TXBB_IOS_SDK.callPay调用起Native方法
OC端调用JS代码则只需通过context调用evaluateScript方法即可,下列代码即会用JS显示Hello World,而在iOS7.0之前你可能通过[webView stringByEvaluatingJavaScriptFromString:@"document.title"]方法来获取WebView的title。
JS和OC通信还有个非常著名的第三方库WebViewJavascriptBridge,如果你的项目需要支持iOS6之前的系统,你可以通过这个项目实现JS和OC的通信。
相关文章推荐
- dop object 中的属性运用
- OC基础教程1-Hello Wrold(OS X版)
- JSONObject与JSONArray的使用
- Objective-C 面向对象(类II)
- error: allocating an object of abstract class type
- Effective Objective-C 2.0 第5条:用枚举表示状态、选项、状态码
- Objective-C 内存管理
- lodash 中文学习拾零之 Object篇
- swift详解之十-------------异常处理、类型转换 ( Any and AnyObject )
- 黑马程序员——Objective-C之面向对象
- Objective-c 循环引用
- Flex中用RemoteObject与java后台通信
- Hibernate 异常:object references an unsaved transient instance - save the transient instance before fl
- object references an unsaved transient instance - save the transient instance before flushing
- 条款12:复制对象时勿忘其每一个成分(Copy all parts of an object)
- IOS学习笔记3—Objective C—简单的内存管理
- IOS学习笔记2—Objective C—类、属性、方法
- Object-C中获取当前触摸点的坐标位置
- 黑马程序员——Objective-C之对象特性
- org.hibernate.PersistentObjectException: detached entity passed to persist异常