渣渣程序员

IOS和Javascript的通信(二)

上面讲了如何用ObjectiveC代码调用Javascript。现在看一下怎么使用Javascript调用ObjectiveC。

使用Javascript调用ObjectiveC不像ObjectiveC调用Javascript那么简单。需要两方定义协议,按照约定进行对应逻辑的运行。

依然是上一篇文章的代码。当然,如果只是看Javascript如何调用ObjectiveC也可以直接看。

html 代码:

<input type = "button" onclick = "javascript_call_objectiveC('startCamera','')" value = "测试" name = "name"/>

Javascript 代码:

function javascript_call_objectiveC(method,parameter) {

        var url = "JSCommunicateOC://"+method+":"+parameter;

        document.location = url;

}

上面的代码的意思很简单,就是点击测试按钮的时候,调用Javascript的javascript_call_objectiveC方法,Javascript方法定向到一个url地址。

在IOS中,当UIWebview中有链接地址跳转的时候,会调用delegate中的

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

方法。在这个方法中你可以通过下面的代码得到请求的url地址:

NSString *requestString = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

在这里,当你点击测试按钮的时候,你得到的requestString类似下面这样:

jscommunicateoc://startCamera

已经得到了传过来的请求。至于应该怎么做就是逻辑的事情了。在实际开发中,协议怎么定义,数据怎么解析,都是自己的事情了。当然你自己定义的协议头不应该是标准的协议头,比如HTTP,HTTPs等。

评论

热度(1)