0

アプリ内から Safari を起動する方法に関するいくつかの投稿をここで読みましたが、すべて UIApplication:OpenURL を使用すると書かれています: しかし、これは私にとってはうまくいきません。

ダウンロードされ、アプリケーションのサンドボックスに保存されている .html ページがあります。このページを UIWebView で起動できますが、起動できません。次のコードでは何も起こりません。

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

パスの形式は file://..../page1.html で、前述したように、requestObj を UIWebView に渡すと、正常に読み込まれます。

動作しない理由はありますか? Safari はローカル以外のファイルを含むアプリからのみ起動できますか?

4

2 に答える 2

0

Safari は、独自のサンドボックス化されたアプリとほとんど同じように動作します。つまり、独自のサンドボックス外のファイルにはアクセスできません。そのファイルは Safari ではなくアプリのサンドボックスにあるため、ファイル URL で参照しているファイルにアクセスできません。リモート URL を Safari に渡す必要があります - HTML をどこかの Web サーバーに置くことによって。アプリでこれが不可能/実用的でない場合は、アプリUIWebView内で引き続き を使用する必要があります。ローカルの html ファイルにアクセスできることがすでにわかっているためです。必要な追加のコントロール (進む、戻るなど) を実装して、Safari の動作を模倣します。

于 2012-05-21T03:45:54.150 に答える
0

これは、ファイル URL に対して発生することを意図していると推測します。を使用する場合UIWebView、そのブラウザ インスタンスはアプリケーションのサンドボックスを使用します (たとえば、そのブラウザ インスタンスで使用できる Cookie は、Safari アプリの Cookie とは独立しています)。Safari を使用している場合、サンドボックスの外にいることになり、Apple が Safari をファイル エクスプローラーのように使用することを許可した場合、Bad Things™ が発生する可能性があります。

于 2012-05-21T03:34:43.120 に答える