我需要拦截对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标识符来检查我是否知道我正在拦截正确的呼叫)。其他类似的问题也被问到了,但是我还没有能够得到任何工作,许多人看起来非常hackish,而且他们通常都已经过时了。我尝试过访问webview的html内容,但令牌并不存在,因为它只是通过window.external.notify发送的,因为它出现了警告错误没有注册。
我知道现在iOS 7中的原生JS-&gt; objC桥接器,我只需要支持iOS 7+,但我从来没有使用它,我看起来不太可能得到它并运行。它似乎主要是将您自己的JS源文件作为应用程序的一部分,而不是通过UIWebView与服务器通信,但如果我错了,请告诉我。