Mac App Storeで、いくつかのグラフィックを表示するプログラムを作成しました。時折、インターネットからこれらを更新します。ほとんどの人と同じように、私は今、自分のアプリをサンドボックス化する必要があります。
ほとんどすべてが機能していますが、更新するとファイルがアプリ自体のバンドルに保存され、「sandboxd:denyfile-write-create」で失敗します。
私はfopen(...、 "wb")を使用します
fopenに渡されるパスは次のとおりです。/Users/MyUser/Library/Developer/Xcode/DerivedData/MyApp-czuwveatgjffaggwqjdqpobjqqop/Build/Products/Debug/My.app/Contents/Resources/the_file.foo
パスは次を使用して作成されます。
CFBundleRef bundle = CFBundleGetMainBundle();
CFURLRef url = CFBundleCopyResourcesDirectoryURL(bundle);
CFURLGetFileSystemRepresentation(url, true, (UInt8*)buf, sizeof(buf));
私はここで明らかに間違ったことをしていますか?私のアプリはマルチプラットフォームなので、理想的にはfopen/etcを使い続けます。私が理解したように、アプリが他の場所で何もできないようにブロックされている場合でも、アプリは独自のバンドルへの書き込みを許可する必要がありますか?
ありがとう!