我计划使用带有uiwebview的 shell iphone应用程序,而我的大部分应用程序都通过uiwebview中的javascript运行。
现在,我知道使用stringByEvaluatingJavaScriptFromString从obj-c环境向javascript环境进行通信很容易,但是,有没有推荐的从javascript环境与obj-c世界进行通信的方法?
谢谢
最佳答案
我总是使用一种方法,将应用程序“导航”到一个特殊的URL:
window.location = "myapp://somemessage/someargument";
应用程序在以下功能中捕获到该错误的位置:
-(BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ( [[url scheme] isEqualToString:@"myapp"] )
{
[self handleJSEvent:url];
return NO;
}
return YES;
}
此外,根据您的需要,您可以使用通过
JSON.stringify(events)
获取的某种事件队列,以响应使用上述方法发送到应用程序的消息。对于从应用程序到js的通信,JSON也非常适合。如果有标准或标准的方式可以做到这一点,我显然会错过这一点。