2

我有一个 IOS 应用程序,其中有一个 Web 浏览器。

显示此 Web 浏览器时,它会导航到 Internet 上的一个页面,例如http://myexample.com/myiosapp

是否可以在这个网站上放置一个 javascript 代码,当下载到手机上时,它会与本机应用程序通信?它可以调用一个Objective-C方法,或者写一些东西到这个应用程序的存储空间吗?

前任。托管在 myexample.com/myios 应用程序上的代码:

function saveSomeString() {
    xcode.Save("somestring");
}

应该调用一个名为 Save 的 Objective-C 函数,它将传入的字符串参数保存到本地存储。

4

1 回答 1

6

是的,你可以,但它有点hacky。

在 Objective-C 方面:

基本上,在 UIWebView 中,您将使用在 URL 请求开始之前调用的方法 shouldStartLoadWithRequest(来自 UIWebViewDelegate):

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

在 Javascript 方面:

您的 javascript 代码将导航到您将根据上述方法过滤的“假” URL。就像是:

window.location = "js2objc://save:param";

回到 Objective-C 方面:

在我之前提到的方法中,您查找关键字 js2objc(或您选择的任何一个),然后提取信息并采取任何适当的操作:

if([[url scheme] isEqualToString:@"js2objc"]){
    // extract the parameters and save them, o do whatever action you need
    return NO;  // so the UIWebView doesn't actually follow the url
}
于 2012-11-27T14:44:47.617 回答