問題タブ [security-scoped-bookmarks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - セキュリティスコープのブックマークを介して複数のデバイスでiCloudファイルにアクセスする
アプリの iCloud ディレクトリに保存されているセキュリティ スコープのブックマークがあり、iCloud にも保存されているファイルを指しているので、ブックマークとファイルはアプリを再インストールした後でも利用できます。今度は、同じ iCloud アカウントを使用して同期された、別のデバイスのブックマークとファイルにアクセスしたいと思います。
別のデバイスで作成されたブックマークを介してそのようなファイルにアクセスすることはできますか? Apple のドキュメンテーションは、そのトピックについて把握するのが難しいです。ドキュメントには次のように記載されています。
アプリ スコープのブックマークの場合、ブックマークを作成したアプリ以外のサンドボックス化されたアプリは、(ブックマークから取得した) URL が指すファイル システム リソースへのアクセスを取得できません。具体的には、ブックマークを作成した呼び出し元と同じコード署名 ID を呼び出し元が持っていない場合、セキュリティ スコープで作成されたブックマークの解決に失敗します。
ドキュメント スコープのブックマークの場合、ブックマーク データ自体にアクセスでき、ブックマークを所有するドキュメントにアクセスできるサンドボックス化されたアプリは、リソースへのアクセスを取得できます。
ドキュメントスコープのブックマークを作成したいのですが、これまでの試みはすべてエラーで終わります。ドキュメント スコープのブックマークは macOS のみに予約されており、iOS では使用できませんか?
アップデート
次のコードを使用してブックマークを保存しています。
url は UIDocumentBrowserViewController によって返され (そして、既にダウンロードされて利用可能な iCloud ファイルを指します)、bookmarkUrl は iCloud アプリ ディレクトリのブックマークの場所を指します。次に、コードを使用してそれを読み取ります。
iOS 13.6 を実行している同じデバイスにアプリを再インストールする間は問題なく動作します。iOS 14.4 を実行している他のデバイスでは、アプリを再インストールした後でも、最後の行でエラーが発生します。
新しい iOS 14 パーミッション ルールに関連する何かが欠けているようです。また、一方の電話で作成されたブックマークはもう一方の電話でアクセスできますが、ブックマークからリソース URL を解決しようとすると、次のエラーで終了します。
swift - コマンド ラインからファイルのアクセス許可を取得する
ユーザーが提供する特定のファイルにアクセスしたいコマンドラインツールを作成しようとしています。たとえば、これを可能にしたい:
サンドボックス モードでは、アクセス許可がないため、ファイルを読み書きできません。これは問題ありませんが、ユーザーに選択したファイルへのアクセス許可を付与してもらいたいと思います。UI ベースのアプリを開発する場合NSDocumentController
、セキュリティ スコープの URL を返す を使用してこれを行うことができます。ドキュメント ピッカーを使用せずに、このようなセキュリティ スコープの URL を取得する方法はありますか? たとえば、Matlab を初めて開いたときに、「Matlab に 'Documents' へのアクセスを許可しますか?」のようなプロンプトが表示されたときなどです。