【发布时间】:2014-03-13 23:21:22
【问题描述】:
我需要拦截对 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->objC 桥,我只需要支持 iOS 7+,但我从未使用过它,而且我似乎也无法启动并运行它。它似乎也主要用于将您自己的 JS 源文件作为应用程序的一部分,而不是用于通过 UIWebView 与服务器通信,但如果我对此有误,请告诉我。
【问题讨论】:
标签: javascript iphone objective-c ios7 uiwebview