在objective C中拦截来自javascript的window.external.notify调用

Intercepting window.external.notify call from javascript in objective C

本文关键字:javascript window external 调用 notify objective      更新时间:2023-09-26

我需要拦截一个javascript调用window.external.notify返回一个安全令牌字符串,我需要进入我的目标C代码。javascript在UIWebView中执行。脚本如下所示:

<script type="text/javascript">
    try{
        window.external.notify('{<extremely long dictionary as a JSON string>}');
    }
    catch(err){
        alert("Error ACS50021: window.external.notify is not registered.");
    }
</script>

我需要以某种方式得到JSON字典成一个字符串在objective C.我试过通过这里的方法:http://www.stevesaxon.me/posts/2011/window-external-notify-in-ios-uiwebview/;但它似乎干扰了html/javascript页面的渲染,也没有捕获字符串(我没有一个方便的acs标识符来检查,以知道我正在拦截正确的调用)。其他类似的问题也有人问过,但我没能找到答案,很多问题看起来都很俗套,而且通常都很过时。我试过访问webview的html内容,但令牌不存在,因为它只通过window.external发送。Notify,它错误地提示未注册

我知道现在iOS 7中有一个原生JS->objC桥,我只需要支持iOS 7+,但我从未使用过它,我似乎也无法启动和运行。它似乎也主要是有你自己的JS源文件作为你的应用程序的一部分,而不是通过UIWebView与服务器通信,但如果我错了,让我知道。

试试这个方法。在这里,页面被重定向并使用receive data方法加载令牌。