2012-11-15 21 views
10

私はネットとAppleの助けを借りてこれに関する何らかのガイダンスを探していました。誰かが似たような状況に陥っているのだろうか、起こっていること(または起こっていないこと)について何らかの洞察を持っているのだろうか。ファイルのアプリスコープのブックマークを取得できません - OS X sandbox

私はアプリケーションによって後でセッションで呼び戻されるファイルのためのアプリスコープのブックマークを取得しようとしています。選択されたセッション中に開くことができるので、パス自体がユーザーによって選択された後、サンドボックスに正しく追加されていることを確認できます。

ただし、後でセキュリティスコープのブックマークを取得してアクセスすることはできません。

は、ここで私がやっているものです:私は、例えば、文字列pathなどだけでそれをテストから生成urlでNSSavePanelのURLの結果を、それの両方を試してみた

NSURL *url = [[NSURL alloc] initFileURLWithPath:path]; 
NSError *error = nil; 
NSData *bookmarkData = [url 
      bookmarkDataWithOptions:(1UL << 11) //NSURLBookmarkCreationWithSecurityScope 
      includingResourceValuesForKeys:nil 
      relativeToURL:nil 
      error:&error]; 
[url release]; 

。 (文字列pathは、従来の理由から、私が使用したいものです。)

定数の代わりにbookmarkDataWithOptionsの値を使用する必要があります。これは、他の従来のコード私は、10.33 SDKでコンパイルしなければなりません。NSURLBookmarkCreationWithSecurityScopeは利用できません。

問題のファイルへのパスが "/Users/me/Documents/document.ext"であり、NSURLが正しく初期化されている(または少なくとも同じパスを反映している)と確認できます。

このアプリケーションには、資格「com.apple.security.files.bookmarks.app-scope」が含まれています。

とにかく、これは動作しません。それは0x0と0x0ののerror、およびコンソールのbookmarkData両方のコードの結果は示していますScopedBookmarkAgent: Failed to retrieve app-scope key, aborting.

私はurl代わりにnilこととcom.apple.security.files.bookmarks.document-scopeに資格を変更するrelativeToURLを変更すると、適切に動作するようです - その少なくとも、0以外の値を取得し、エラーは記録されません。しかし、私はそれが私が望むものではないと確信しています(つまり、ドキュメントスコープブックマーク)。

明らかに私は間違っていますか?

答えて

9

私の永遠の恥に対して、それは私のせいでした。

テストとデバッグのためにプロジェクトを別のマシンに移動すると、開発ビルドのコード署名が無効になっています。

これは明らかに、コンソールにエラーコードと謎のメッセージだけが表示され、他のものが正しく動作していないことを示すものではありません。

他の人が誤って同じことをした場合に備えて、これをここに残してください。

+0

私は、署名されていないビルドが原因であることを確認できます。ここでは、Open Source [Mac Linux USB Loader](https://github.com/SevenBits/Mac-Linux-USB-Loader)をデバッグしていましたが、これが私の問題を解決しました。 – Bigood

関連する問題