Verhindert, dass iOS QuickLook einen Cache generiert

9

Ich verwende das QuickLook-Framework in meinem iOS App zur Vorschau verschiedener Dateien. Ich habe kürzlich festgestellt, dass QuickLook einen Zwischenspeicher aller Vorschaudateien im Verzeichnis tmp meiner App speichert. Es gibt jedoch zwei Probleme mit QuickLook-Caching-Dateien:

  1. Diese zwischengespeicherten Dateien sind bereits im Verzeichnis Documents gespeichert. Also theoretisch könnte die App in der Größe verdoppeln, wenn der Benutzer alle ihre Dateien ansehen möchte (was sie wahrscheinlich tun werden). Okay, keine große Sache, ich kann den Cache regelmäßig mit diesem Code löschen:

    %Vor%
  2. Das zweite und wichtigste Problem ist, dass QuickLook anscheinend einen sekundären Cache in einem Systemordner (nicht in meiner App) erstellt. Dies ist ein Problem, da Benutzer die Möglichkeit haben, einzelne Dateien in meiner App zu verschlüsseln. Wenn sie vor dem Verschlüsseln eine Datei in der Vorschau anzeigen, sieht das normal aus. Wenn sie verschlüsseln und anschließend eine Vorschau anzeigen, wird die Datei immer noch so angezeigt, als wäre sie nicht verschlüsselt. Ich weiß, dass es kein Problem mit der Verschlüsselung gibt, da die verschlüsselte Datei, die im Documents -Verzeichnis meiner App gespeichert ist, verschlüsselt ist und von keinem Programm (richtig) gelesen werden kann. Dies ist ein schwerwiegendes Problem, da der Benutzer glauben kann, dass die Datei nicht verschlüsselt ist. Es ist auch ein Sicherheitsproblem, weil QuickLook die Datei anderswo zwischenspeichert.

Hier ist mein QuickLook-Code:

%Vor%

Weiß jemand, wo der QuickLook-Cache ist oder ob es einen gibt (vielleicht ist es ein Bug)?

Wie kann ich verhindern, dass QuickLook Dateien zwischenspeichert, oder wie kann ich den Cache zurücksetzen? Wenn keiner von beiden möglich ist, gibt es eine iOS 6 Alternative zu QuickLook (ich habe gehört, dass QuickLook geändert wurde) iOS 6, also gibt es keine Problemumgehungen, Alternativen, etc.)?

Irgendwelche Lösungen oder Ideen geschätzt!

    
Samuel Spencer 20.04.2013, 15:34
quelle

3 Antworten

1

Wenn QLPreviewController nicht daran gehindert werden kann, sein eigenes Caching durchzuführen, sollten Sie in Erwägung ziehen, Ihre eigene Version QLPreviewController mit einem UIWebView zu erstellen (da dies viele Dateitypen wie PDF, docs, xls usw. anzeigen kann) .).

Es ist auf keinen Fall eine ideale Lösung und Sie werden nicht annähernd das Leistungsniveau / die Qualität der Benutzeroberfläche erreichen, wie es der QLPreviewController bietet. Ja ... es ist ein bisschen eine gehackte Lösung, aber knapp vor einer öffentlichen API, um den sekundären Cache zu löschen ... es ist das Einzige, was ich mir vorstellen kann.

Ich denke, es ist ein Wechsel zwischen Benutzerfreundlichkeit und Sicherheit.

Viel Glück!

    
Jamie Chapman 30.04.2013, 12:25
quelle
1

Ich glaube, dass Sie den gesamten Cache über die Eingabeaufforderung zurücksetzen können:

%Vor%

Oder erstellen Sie eine Vorschau für bestimmte Dokumente mit:

%Vor%

Aber da dies eine Befehlszeilenlösung ist, ist dies wahrscheinlich nicht das, was Sie brauchen. Viel Glück, aber.

    
Jonathan 30.04.2013 12:26
quelle
1

Vielleicht versuchen Sie einen NSURLCache und sehen, ob das hilft.

Richten Sie es in der Anwendung didfinishlaunchingwithoptions ein:

%Vor%

Dann können Sie Folgendes tun, wenn Sie den Cache leeren möchten:

%Vor%

Ob das mit schnellem Blick funktioniert oder nicht, weiß ich nicht, aber es ist einen Versuch wert.

    
BountyBob 30.04.2013 14:24
quelle

Tags und Links