2012-05-21 36 views
0

我已經閱讀了關於如何從所有使用UIApplication的應用程序中啓動Safari的幾篇文章:OpenURL:但是這不適用於我。使用UIApplication啓動Safari:OpenURL不能正常工作

我有一個.html頁面已被下載並存儲在我的應用程序的沙箱中。 我可以在UIWebView中啓動此頁面,但無法啓動它,下面的代碼沒有任何反應。

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

的路徑是文件形式的://..../page1.html,正如我所提到的,如果我通過了requestObj到一個UIWebView它將成功加載。

任何想法爲什麼它不能正常工作,Safari是否只能從具有非本地文件的應用程序啓動?

+0

應用程序無法訪問其他應用程序的沙箱,因此Safari瀏覽器無法訪問存儲在應用程序本地沙箱中的文件。 – danielbeard

回答

0

Safari的行爲非常類似於您自己的沙盒應用程序 - 即無法訪問自己的沙盒以外的文件。因此,它不能通過文件URL訪問您指向的文件,因爲該文件駐留在應用程序的沙箱中,而不是Safari的。您應該將遠程URL傳遞給Safari - 將您的HTML放在某個Web服務器上。如果這不適用於您的應用程序,那麼您需要在應用程序內繼續使用UIWebView--因爲您已經發現它可以訪問本地html文件。實施您需要的任何附加控制(向前,向後等)以模仿Safari的行爲。

0

我會猜測這是針對文件URL發生的。如果您使用UIWebView,該瀏覽器實例將使用您的應用程序的沙箱(例如,該瀏覽器實例可用的Cookie與Safari應用程序的Cookie無關)。如果你使用Safari,那麼你已經離開了沙箱,如果Apple允許它像文件瀏覽器一樣使用,Bad Things™會發生。