从某个网页上托管的JavaScript调用Objective-C函数
我有一个IOS应用程序,其中有一个web浏览器 当显示此web浏览器时,它会导航到Internet上的某个页面,例如 是否可以在这个网站上放置一个javascript代码,当下载到手机上时,它会与本机应用程序通信?它可以调用Objective-C方法,或者向该应用程序的存储空间写入一些内容吗 前。 myexample.com/myios应用程序上托管的代码:从某个网页上托管的JavaScript调用Objective-C函数,javascript,objective-c,ios,Javascript,Objective C,Ios,我有一个IOS应用程序,其中有一个web浏览器 当显示此web浏览器时,它会导航到Internet上的某个页面,例如 是否可以在这个网站上放置一个javascript代码,当下载到手机上时,它会与本机应用程序通信?它可以调用Objective-C方法,或者向该应用程序的存储空间写入一些内容吗 前。 myexample.com/myios应用程序上托管的代码: function saveSomeString() { xcode.Save("somestring"); } 应该调用名为Sa
function saveSomeString() {
xcode.Save("somestring");
}
应该调用名为Save的Objective-C函数,该函数将传入的字符串参数保存到本地存储。可以,但它有点粗糙 在Objective-C端: 基本上,在UIWebView中,您将使用方法shouldStartLoadWithRequest(来自UIWebViewDelegate),该方法在URL请求启动之前调用:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
在Javascript端:
您的javascript代码将导航到一个“假”URL,您将根据上面的方法对其进行过滤。比如:
window.location = "js2objc://save:param";
回到目标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
}
您可以在js中使用本地存储,这非常简单!看到了吗?但在使用本地存储之后,我可以通过XCode读取这些信息吗?不。我不明白您在寻找什么。@SerhatÖzgel:XCode是一种开发环境,而不是一种编程语言。所以它没有办法。你可能指的是客观C方法。我已经相应地更改了标题和标签。这应该可以了,谢谢。一旦我尝试了,我就会接受。我找到了一个教程,一步一步地描述了上面的内容。