iOSアプリケーションでQuickLook Frameworkを使用しています。さまざまなファイルをプレビューしています。私は最近、QuickLookは、私のアプリのtmp
ディレクトリにすべてのプレビューファイルのキャッシュを保持していることに気づいた。iOS QuickLookがキャッシュを生成しないようにする
これらのキャッシュされたファイルがすでにDocumentsディレクトリに格納されています。クイックルックはしかし、ファイルをキャッシュするには2つの問題があります。だから理論的には、ユーザーがファイルのすべてをプレビューしたい場合(おそらくこれがそうだろう)、アプリケーションのサイズは倍増する可能性があります。 (ない
NSFileManager *fileMgr = [NSFileManager defaultManager]; NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:NSTemporaryDirectory() error:nil]; for (NSString *filename in fileArray) { [fileMgr removeItemAtPath:[NSTemporaryDirectory() stringByAppendingPathComponent:filename] error:NULL]; }
秒、および最も重要な問題は、クイックルックは、システムフォルダ内の二次キャッシュを作成しているように見えるということです:さて、大したことでは、私は定期的にこのコードを使用してキャッシュを一掃することはできません私のアプリ)。これは、ユーザーがアプリ内の個々のファイルを暗号化するオプションを持っているため、問題です。暗号化する前にファイルをプレビューすると正常に見えます。後で暗号化してプレビューすると、ファイルは暗号化されていないかのように表示されます。私のアプリケーションの
Documents
ディレクトリに格納されている暗号化されたファイルが暗号化されているため、暗号化に問題はないことがわかります。ファイルが暗号化されていないと思われる可能性があるため、これは大きな問題です。これは、QuickLookがファイルを他の場所にキャッシュしていることを意味するため、セキュリティの問題です。ここで
私のQuickLookのコードです:
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
return 1;
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//Get the stored user data and file name
NSString *FileName = [defaults objectForKey:@"FileName"]; //Name of file stored in NSUserDefaults
NSString *finalFilePath = [documentsDirectory stringByAppendingPathComponent:FileName];
return [NSURL fileURLWithPath:finalFilePath];
}
- (IBAction)previewFile:(id)sender {
//Setup QuickLook
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.delegate=self;
previewController.dataSource=self;
previewController.currentPreviewItemIndex = 0;
[previewController reloadData];
[self presentModalViewController:previewController animated:YES];
[previewController.navigationItem setRightBarButtonItem:nil];
}
QuickLookのキャッシュがどこにあるか誰もが知っている、または1つは、(多分それはバグの一部のようなものだ)がある場合にしていますか?
QuickLookがファイルをキャッシュしないようにするにはどうすればよいですか、またはキャッシュをリセットするにはどうすればよいですか?これらのいずれも可能でない場合は、QuickLookのiOS 6の代替品があります(iOS 6ではQuickLookが変更されたため、回避策や代替品などはありません)。
いずれかのソリューションやアイデアが評価されました!
「私には道が見えず、UIWebViewを使っていませんでした」(悪い機能にもかかわらず)答えがありません。あなたはAppleに機能要求を提出し、彼らが何を言ったかを見てきましたか? – DBD