使用UIApplication启动Safari:OpenURL无法正常工作

时间:2012-05-21 00:17:45

标签: ios

我已经在这里阅读了几篇关于如何在应用程序中启动Safari的帖子,所有人都说要使用UIApplication:OpenURL:但是这对我不起作用。

我有一个.html页面已经下载并存储在我的应用程序的沙箱中。 我可以在UIWebView中启动此页面,但无法启动它,使用以下代码没有任何反应。

  NSURLRequest *requestObj = [NSURLRequest requestWithURL:firstPageFullPath];
 [[UIApplication sharedApplication] openURL:[requestObj URL]];

路径的格式为file://..../page1.html,正如我所提到的,如果我将requestObj传递给UIWebView,它将成功加载。

为什么它不起作用的任何想法,只能从具有非本地文件的应用程序启动Safari吗?

2 个答案:

答案 0 :(得分:0)

我猜这是文件网址的意思。如果您使用UIWebView,该浏览器实例将使用您的应用程序的沙箱(例如,该浏览器实例可用的cookie与Safari应用程序的cookie独立)。如果您使用Safari,那么您就会离开沙盒,如果Apple允许它像文件浏览器一样使用,那么就会发生Bad Things™。

答案 1 :(得分:0)

Safari的行为与您自己的沙盒应用程序非常相似 - 即它无法访问自己沙箱之外的文件。因此,它无法使用文件URL访问您引用的文件,因为该文件位于应用程序的沙箱中,而不是Safari的沙箱中。您应该将远程URL传递给Safari - 将您的html放在某个Web服务器上。如果这对您的应用程序来说不可行/不实用,那么您需要继续在应用程序中使用UIWebView - 因为您已经发现这可以访问本地html文件。实现您需要的任何其他控件(前进,后退等)以模仿Safari的行为。