gpt4 book ai didi

javascript - 从某个网页上托管的 JavaScript 调用 Objective-C 函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:18:50 24 4
gpt4 key购买 nike

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

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

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

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

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

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

最佳答案

是的,你可以,但它有点 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
}

关于javascript - 从某个网页上托管的 JavaScript 调用 Objective-C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com