我计划使用带有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也非常适合。

如果有标准或标准的方式可以做到这一点,我显然会错过这一点。

10-07 19:47
查看更多