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等。
评论