美文网首页
oc 和js 交互 (2)

oc 和js 交互 (2)

作者: JW_T | 来源:发表于2016-10-11 09:48 被阅读15次

Js -> Native

以前传统的做法是根据url字符串来做特殊匹配,从而完成一些特定的工作譬如


12- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

NSString *requestString = [[request URL] absoluteString];

NSString *scheme = @"js-pingpp";

NSString *protocol = [NSString stringWithFormat:@"%@://", scheme];

if([requestString hasPrefix:protocol]) {

//调用相应支付Api

/*do something*/

returnNO;

}

returnYES;

}

但是iOS7之后, iOS 7 引入了 JavaScriptCore 库,它把

WebKit 的 JavaScript 引擎用 Objective-C

封装,让JavaScript与Objective-C之间的通信变的非常简单。首先导入JavaScriptCore.framework框架, 然后

JS端:

1

TXBB_IOS_SDK.callPay(charge,this.success,this.cancel);

OC端:

.h中引入头文件,并实现协议和对应的方法

.m中在webViewDidFinishLoad中给context赋值,并把self指针给TXBB_IOS_SDK,JS端即可经过TXBB_IOS_SDK.callPay调用起Native方法


12-(void)webViewDidFinishLoad:(UIWebView *)webView

{

self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

self.context[@"TXBB_IOS_SDK"] = self;

}

#pragma mark - JSExport Methods

- (void)callPay:(NSString *)charge success:(NSString *) success cancel:(NSString *)cancel {

...

[Pingpp createPayment:charge appURLScheme:@"msc"withCompletion:completion];

}

Native -> Js

OC

端调用JS代码则只需通过context调用evaluateScript方法即可,下列代码即会用JS显示Hello

World,而在iOS7.0之前你可能通过[webView

stringByEvaluatingJavaScriptFromString:@"document.title"]方法来获取WebView的

title。

-(void)webViewDidFinishLoad:(UIWebView *)webView

{

JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

NSString *alertJs=@"alert('Hello Word')";

[context evaluateScript:alertJs];

}

最后

JS和OC通信还有个非常著名的第三方库WebViewJavascriptBridge,如果你的项目需要支持iOS6之前的系统,你可以通过这个项目实现JS和OC的通信。

相关文章

  • js iOS原生交互

    一、交互(UIWebView) 1、OC调用JS (1)OC调用代码 (2)JS代码 2、JS调用OC (1)OC...

  • OC与JS交互

    OC与JS交互前言 OC与JS交互之UIWebView OC与JS交互之WebViewJavascriptBrid...

  • iOS UIWebView 之JS交互

    通过JavaScriptCore实现OC与JS的交互1 OC调用JS 在JS中JavaScript代码如下 2 J...

  • OC和JS交互(UIWebView)中级篇2

    上回书说 OC和JS交互的一些准备工作, 下面开始OC和JS交互的重头戏->JS调用OC. 这里我们会用到Safa...

  • OC和JS交互、JS和OC交互

    现在做开发 很多会出现交互问题 我在公司项目中也会用到交互 下面我大致写下 交互的代码 - (void)loadW...

  • oc 和js 交互 (2)

    Js -> Native 以前传统的做法是根据url字符串来做特殊匹配,从而完成一些特定的工作譬如 12-(BOO...

  • iOS webview和wkwebview

    1..webVidew的方法 oc 调js js 调oc 通过框架JSContext注入进行交互 2.wkwebv...

  • iOS 的JS 和 OC 交互(二)

    iOS 的JS 和 OC 交互(一) 好吧 今天继续再来搞搞 这个 交互的问题 OC 怎样可以拦截到 JS 的调...

  • WKWebView和WebView与JS的交互方式

    WKWebView和WebView与JS的交互方式 UIWebView与JS的交互方式 一、 OC调用JS 直接调...

  • ios 开发OC 和 JS 交互

    ios 开发OC 和 JS 交互 最近遇到了关于 oc 和 js 交互的功能, 记录一下就当是是做了笔记的 开发环...

网友评论

      本文标题:oc 和js 交互 (2)

      本文链接:https://www.haomeiwen.com/subject/qnovyttx.html