2014-07-06 12 views
5

È possibile che un'applicazione scaricata attraverso il Mac App Store acceda alle cartelle di sistema?Un'app sandbox può essere venduta nelle cartelle del sistema di accesso del Mac App Store?

Voglio dire questo: la mia app ha bisogno di leggere il contenuto delle directory che si trovano all'esterno dell'area sandbox, diciamo qualcosa come /Library/StartupItems ed eventualmente eliminare un file lì se l'utente lo desidera.

E 'possibile per un'applicazione sandbox accedere alle cartelle di sistema ed eliminare i file lì? Se non può cancellare, può almeno leggere?

Devo abilitare sandbox se voglio vendere sul Mac App Store?

ho cercato una directory a caso a fare questo:

NSString *path = @"/Library/StartupItems"; 
    NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]; 

e posso ottenere l'elenco di directory. Come posso leggere che se l'app è contrassegnata come sandbox? Non capisco

risposta

4

No, OS X Le applicazioni vendute tramite Mac App Store non possono accedere alle risorse come descritto. È inoltre richiesto che tutte le app siano sandbox e firmate con un certificato del programma per sviluppatori Mac valido.

Come per essere in grado di leggere /Library/StartupItems (che è deprecato) quando l'app è contrassegnata come "sandboxed"; non è solo questione di avere l'opzione selezionata. È inoltre necessario assicurarsi che "Usa file di diritti" sia selezionato e che l'applicazione sia correttamente codificata. Una volta che hai fatto che è possibile controllare per verificare che sia correttamente tenuta stagna nel Terminal utilizzando:

codesign -dvvv --entitlements :- Some.app/Contents/MacOS/Executable 

In aggiunta, ci sono alcune directory in cui i file che sono "mondo leggibile" possono essere letti:

/bin 
/sbin 
/usr/bin 
/usr/lib 
/usr/sbin 
/usr/share 
/System 

Per consentire a un'applicazione OS X di interagire con il file system come il vostro (precedente) esempio, l'applicazione avrebbe bisogno di usare privilegi elevati tipicamente usando Authorization Services - che App Sandbox non consente. Dai un'occhiata alla sezione intitolata "Determine Whether Your App Is Suitable for Sandboxing" e dovrebbe rispondere a qualsiasi altra preoccupazione che potresti avere.

Il sandboxing è valido in molti modi, ma anche molto restrittivo allo stesso tempo. Se la tua app deve fare cose che non rientrano nell'ambito di ciò che è permesso, puoi scegliere di non vendere attraverso il Mac App Store e non utilizzare Sandboxing. Alcuni sviluppatori creano anche due versioni diverse della loro app (Mac App Store e App Store non Mac). Se la tua app si affida al fatto di uscire dal suo contenitore per gran parte di ciò che vorresti considerare/soppesare i pro e i contro di Sandboxing.

+0

Grazie per la risposta, ma si parla di sandboxing come opzione. Non è un'opzione se voglio venderla nell'app store, giusto? Voglio dire, Apple costringe tutte le app ad essere in sandbox se vengono vendute attraverso l'app store, giusto? – SpaceDog

+2

corretto. L'uso di App Sandbox è facoltativo solo se desideri venderlo al di fuori del Mac App Store. –

+0

Lo stavo sospettando. Grazie. – SpaceDog