2017-04-15 3 views
0

Ich entwickle eine App und ich möchte Zugriff auf die /User/<username>/Library/Containers Ordner, um einige Daten zu lesen.Zugriff auf/Benutzer/Library/Container/<identifier> in Sandbox

Beim Iterieren über die Dateien werden keine Daten zurückgegeben, bis ich eine NSOpenPanel an diesem bestimmten Speicherort öffnen. Dieses Verhalten ist zu erwarten, da die App Sandboxed ist.

Ich habe eine andere App installiert, die "AppManager" heißt (Sandboxed, verfügbar im App Store). Die App liest auch Daten aus diesem Ordner, aber ich muss nur die NSOpenPanel auf dem /Applications Ordner öffnen.

Ich lese über die FileManager Methode URLForDirectory:inDomain:appropriateForURL:create:error:, die ein guter Ausgangspunkt scheint, aber irgendwie ist diese Methode nicht verfügbar?

Wie (wenn möglich) kann eine Sandbox-App auf /User/<username>/Library/Containers zugreifen, ohne eine NSOpenPanel zu öffnen? Kann ich Zugang zu mehr als einem Verzeichnis erhalten, indem ich nur eine NSOpenPanel öffne?

Grüße, Sascha

Antwort

2

Sie nichts ohne die NSOpenPanels oder Ziehen Verzeichnisse auf Ihrer App tun können - dies ist eine Sicherheitsmaßnahme, damit die App Store-Anwendungen trash Daten nicht, die ihnen nicht gehören

Ich sah Programme bitten den Benutzer nur / in NSOpenPanel wählen, um Zugriff auf das gesamte Laufwerk zu erhalten. Auch hier ist es besser, nur nach dem zu fragen, was Sie wirklich brauchen, da Sie vielleicht nicht mehr zurückkommen. Einige Apps haben nur eine separate Benutzeroberfläche, um den Benutzer zu NSOpenPanel einige Verzeichnisse für sie zu fragen und nicht weiter, bis Sie tun.

+0

Hallo, ich bevorzuge auch diese Methode. Ich war nur neugierig, wie die angegebene App das macht. Es fragt nach/Applications und erhält Zugriff auf/Users//Library. –

+1

Vielleicht ist die App alt (Pre-Sandboxing) oder vielleicht liest sie nur ihren eigenen Container (Sie haben immer den Zugriff darauf) – Alistra

+0

Das letzte Update wurde letztes Jahr veröffentlicht, also ist es sandboxed (oder sonst würde es nicht angezeigt werden (ein Dialog anyways) und die App löscht Dateien aus diesen Verzeichnissen, so dass sie vollen Zugriff auf/Library/ihres eigenen Containers hat. Ziemlich seltsam. –