OS X アプリでサンドボックス化を有効にしてアプリ ストアに再送信し、アプリが変更権限を持つリソースのみをユーザーが選択できるようにする最もエレガントな方法を見つけようとしています。
簡略化されたシナリオ:
- ユーザーは、ファイル システムで画像を選択します。
NSOpenPanel
- ユーザーが
Process Picture
アプリのボタンをクリックする - アプリはインターネットから情報を取得します
- アプリは画像のメタデータを変更します。
ユーザーが写真の選択を完了したら、それぞれが写真フォルダーの下にあることを確認したいと思います。そうしないと、物理ファイルへの書き込みが黙って失敗します。
Appleでは、Pictures フォルダの場所を特定するために次のことを推奨しています。
Pictures ディレクトリには、ユーザーの画像と写真が含まれています。このディレクトリへのパスを取得するには、NSUserDomainMask ドメインで NSPicturesDirectory 検索パス キーを使用します。
上記を実装すると、次のようなパスが得られます。
/Users/thomas/Library/Containers/com.blazingfrog.latipics/Data/Pictures/picture1.jpg
しかし、ユーザーが選択した写真を見たいときは、[myOpenPanel URLs]
戻ります/Users/thomas/Pictures/picture1.jpg
これら 2 つのパスは論理的には同じですが、見た目は大きく異なります。毎回機能する方法でそれらを比較するにはどうすればよいですか?
役立つ場合に備えて、サンドボックス用にアプリを準備するために、次のことを行いました
- XCode で有効な資格
- 有効なアプリ サンドボックス
- 有効なファイル システム (読み取り)
- 受信/送信ネットワーク接続を許可する有効化
- 有効化されたピクチャ フォルダへのアクセス (読み取り/書き込み)