Ho setacciato la rete e Apple mi ha aiutato per una sorta di guida su questo e in arrivo. Mi chiedo se qualcuno si è imbattuto in una situazione simile, o potrebbe avere qualche idea di ciò che è (o non) sta accadendo.Impossibile ottenere il segnalibro con ambito applicazione per il file - sandbox OS X
Sto cercando di ottenere un segnalibro con ambito applicazione per un file da richiamare in una sessione successiva dall'applicazione. Posso confermare che il percorso stesso viene correttamente aggiunto alla sandbox dopo essere stato selezionato dall'utente, perché posso aprirlo (e riaprirlo) durante la sessione quando viene selezionato.
Tuttavia, il tentativo di ottenere un segnalibro con ambito di sicurezza per accedervi in seguito non funziona.
Ecco quello che sto facendo:
NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
NSError *error = nil;
NSData *bookmarkData = [url
bookmarkDataWithOptions:(1UL << 11) //NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys:nil
relativeToURL:nil
error:&error];
[url release];
ho provato sia con url
generato dalla stringa path
così come solo provandola con, per esempio, il risultato della NSSavePanel del URL
. (La stringa path
è, per motivi di eredità, quella che mi piacerebbe essere in grado di utilizzare.)
Sto dover utilizzare il valore per bookmarkDataWithOptions
invece della costante perché, per motivi di qualche altro codice legacy , Sono costretto a compilare con l'SDK 10.6 dove NSURLBookmarkCreationWithSecurityScope
non è disponibile.
Posso confermare che il percorso punta al file in questione come "/Users/me/Documents/document.ext" e che NSURL
sembra inizializzare correttamente (o almeno riflette lo stesso percorso).
L'applicazione include il diritto com.apple.security.files.bookmarks.app-scope
.
In ogni caso, questo non funziona. Che i risultati di codice sia in un bookmarkData
di 0x0 ed un error
di 0x0, e la console mostra: ScopedBookmarkAgent: Failed to retrieve app-scope key, aborting.
se cambio relativeToURL
essere url
invece di nil
e modificare il diritto alle com.apple.security.files.bookmarks.document-scope
, allora sembra funzionare correttamente - che è, bookmarkData
almeno ottiene un valore diverso da zero e non viene registrato alcun errore. Ma sono abbastanza sicuro che non è quello che voglio (vale a dire, un segnalibro di portata del documento).
C'è qualcosa di ovvio che sto sbagliando?
Bene, posso confermare che una build non firmata provoca questo. Per chiunque stia inciampando qui, stavo eseguendo il debug di Open Source [Mac Linux USB Loader] (https://github.com/SevenBits/Mac-Linux-USB-Loader), e questo ha risolto il mio problema. – Bigood