3

たとえば、別のフォルダー内の画像をXMLファイルに参照するXMLファイル(別のアプリからエクスポートされたため、コンテンツを制御できない)がある場合、ユーザーがを使用して画像を参照するまで、画像を読み取ることができません。私のアプリ。

より高いレベルのフォルダを参照するようにすることで回避できますが(「/」を参照する場合でも)、ユーザーに「/ path / to/fileにアクセスできません。お願いします。今すぐ閲覧して、開くことができますか?」

これに対するより良い解決策はありますか?「AppXが/Users/ UserX / FolderXから読み取ろうとしています。許可を与えますか?」のようなプロンプトを表示する方法はありませんか?

4

2 に答える 2

3

ここで私の質問と回答を参照してください:アプリサンドボックス:ドキュメントスコープのブックマークが解決されません。エラーを返さない

コレクションスコープのブックマークをXMLファイルに埋め込んでいます。

アップデート

入力XML形式を制御できないという仕様がある場合、XMLで指定されたファイルにアプリからアクセスする唯一の方法は、ユーザーにそのファイルまたはファイルの親ディレクトリの1つを選択させることですNSOpenPanel。XMLに複数のファイル参照が含まれている場合は、それらすべてを含むディレクトリへのアクセスをユーザーに許可させることができます。

許可を求めることは、サンドボックス化の目的を損なうため、回避する方法はありません。アプリがユーザーの直接の許可を回避できる場合は、マルウェアも回避できます。ただし、アクセス権が付与されると、各ファイルにセキュリティスコープのブックマークを作成できるため、ユーザーに何度も許可を求める必要はありません。

アップデート2

コメントの質問に答えると、次の方法でユーザーがダイアログを簡単に表示できるようになります。

[openPanel setMessage:@"Click 'OK' to allow access to files contained in the selected directory"];
[openPanel setDirectoryURL:[NSURL fileURLWithPath:pathFromTheXMLFile]];

これがに関するドキュメントNSSavePanelです(NSOpenPanelそれを継承し、上記のプロパティはそこで定義されています)。

于 2012-08-02T21:36:16.250 に答える
2

これはハックです(あなたが言及したもののようなものです)-ファイルにファイルパスが埋め込まれていることを検出できる場合-ファイルを開いた後-ユーザーに「ファイルのインポート」を促し、親ディレクトリを選択してコピーすることができますファイルを読み取るためのサンドボックスの親ディレクトリ?

私はそれが悪いことを知っていますが、ファイルにブックマークを埋め込まずにサンドボックスでアップルのビデオを見たことがあります。他に何ができるかわかりません。

于 2012-08-10T12:12:19.920 に答える