【发布时间】:2012-03-28 18:09:20
【问题描述】:
我在 App Store 中的 iPad 应用程序中遇到了一个非常奇怪且极难解决的问题。有关该应用程序在推出新版本后不再工作的报告在过去几周内成倍增加。现在,我能够在内部新 iPad 上重现该问题,该 iPad 已从旧版本的备份中恢复,然后通过正常的 App Store 程序进行更新。
问题:虽然应用程序在通过 App Store 新安装或通过 XCode 运行时运行良好,但在更新后它根本无法按预期运行。但是,一旦应用程序处于“损坏”状态,我什至无法通过有效的 XCode 安装新版本。在这种情况下,这可能是一件好事,因为它可以帮助我解决这个问题。
我们有什么:
- 该应用有一组
UIWebViews,用于从网页加载内容。 - 网页加载一个 Javascript 框架并创建一个全局对象
h5,该对象可用于调用其中的方法。 - 从这里在通信应用程序上 -> UIWebView 是通过对这个
h5对象的 [webView stringByEvaluatingJavaScriptFromString] 调用完成的。
问题来了:
- 在 UIWebView 中设置了 html,但如果更新应用,JavaScript 似乎不会执行。
- 我可以通过 [webView stringByEvaluatingJavaScriptFromString] 运行 javascript 内容,并且可以通过这种方式检索呈现的
outerHTML,只是为了发现我的<script>内容丢失,因此未执行。
不用说,如果我通过应用商店或 XCode 进行全新安装,应用运行良好,JavaScript 被执行并且没有问题。
到目前为止我尝试了什么:
- 我们使用 Three20 库来实现我们的一些功能,它有一个缓存。此缓存已被清除,并检查是否真的被清除。
- 我删除了
<Application root>/Library/caches中的所有内容 - 我没有通过单独的请求加载 URL,然后通过
[webView loadData]将其推送到 WebView,而是尝试- 使用
[webView loadRequest]直接从网络服务器加载URL - 将
NSData转换为NSString并将其推入[webView loadHTMLString] - 有一个
NSString持有 html 并将其推送到[webView loadHTMLString]而无需远程加载内容。
- 使用
我有点想不通这可能是什么原因,我想听听您对这个问题的看法。我错过了什么吗?
【问题讨论】: