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

时间:2014-03-13 23:21:23

标签: javascript iphone objective-c ios7 uiwebview

我需要拦截对window.external.notify的javascript调用,它返回一个我需要进入我的目标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字典变成目标C中的字符串。我已经尝试过这里的方法:http://www.stevesaxon.me/posts/2011/window-external-notify-in-ios-uiwebview/;但它似乎只是干扰了html / javascript页面的呈现而且也没有捕获字符串(我没有一个方便的acs标识符来检查我是否知道我正在拦截正确的呼叫)。其他类似的问题也被问到了,但是我还没有能够得到任何工作,许多人看起来非常h​​ackish,而且他们通常都已经过时了。我尝试过访问webview的html内容,但令牌并不存在,因为它只是通过window.external.notify发送的,因为它出现了警告错误没有注册。

我知道现在iOS 7中的原生JS-&gt; objC桥接器,我只需要支持iOS 7+,但我从来没有使用它,我看起来不太可能得到它并运行。它似乎主要是将您自己的JS源文件作为应用程序的一部分,而不是通过UIWebView与服务器通信,但如果我错了,请告诉我。

1 个答案:

答案 0 :(得分:0)

试试这个method。这里重定向页面并使用接收数据方法加载令牌。