2017-04-15 2 views
0

Je développe une application et je veux accéder au dossier /User/<username>/Library/Containers pour lire certaines données.Accéder à/User/Library/Container/<identifier> dans Sandbox

Lors de l'itération sur les fichiers, aucune donnée n'est renvoyée jusqu'à ce que j'ouvre un NSOpenPanel sur cet emplacement spécifique. Ce comportement est à prévoir, car l'application est en sandbox.

J'ai une autre application qui s'appelle "AppManager" (sandbox, disponible dans l'App Store). L'application lit également les données de ce dossier, mais je n'ai qu'à ouvrir le NSOpenPanel sur le dossier /Applications.

Je lis à propos de la méthode FileManagerURLForDirectory:inDomain:appropriateForURL:create:error: qui semble être un bon point de départ, mais en quelque sorte cette méthode n'est pas disponible? Comment (si possible) une application en mode bac à sable peut-elle accéder à /User/<username>/Library/Containers sans ouvrir de NSOpenPanel? Puis-je avoir accès à plus d'un répertoire en n'en ouvrant qu'un seul NSOpenPanel?

Cordialement, Sascha

Répondre

2

Vous ne pouvez rien faire sans les NSOpenPanels ou en faisant glisser des répertoires sur votre application - c'est une mesure de sécurité pour les applications App Store ne pas les données des ordures qui ne leur appartient pas

J'ai vu des programmes demander à l'utilisateur de simplement sélectionner / dans NSOpenPanel pour avoir accès à l'ensemble du lecteur. Encore une fois, il est préférable de demander simplement ce que vous avez vraiment besoin car vous ne pouvez pas avoir passé l'examen. Certaines applications ont simplement une interface utilisateur distincte pour demander à l'utilisateur de créer des répertoires pour eux et ne continuent pas jusqu'à ce que vous le fassiez.

+0

Bonjour, je préfère aussi cette méthode. J'étais juste curieux de savoir comment l'application spécifiée fait cela. Il demande/Applications et obtient l'accès à/Users//Library. –

+1

Peut-être que l'application est ancienne (pré-sandboxing) ou peut-être qu'il lit son propre conteneur (vous avez toujours accès à cela) – Alistra

+0

La dernière mise à jour a été publiée l'année dernière, donc il est sandbox (sinon il n'aurait pas besoin de montrer une boîte de dialogue de toute façon) et l'application supprime les fichiers de ces répertoires, de sorte qu'elle a un accès complet en dehors de/Library/de son propre conteneur. Assez étrange. –