iOS ですべてのアプリケーションがアクセスできる一時ディレクトリがあり、それらの間でファイルを受け渡すことができますか?
注: UIDocumentInteractionController の [開く] メニューについて理解しました。代わりに UIApplication で openURL を呼び出してファイルを渡したいと思っています。「開く」メニューを使用しないようにしています。
iOS ですべてのアプリケーションがアクセスできる一時ディレクトリがあり、それらの間でファイルを受け渡すことができますか?
注: UIDocumentInteractionController の [開く] メニューについて理解しました。代わりに UIApplication で openURL を呼び出してファイルを渡したいと思っています。「開く」メニューを使用しないようにしています。
いいえ、ありません。唯一の共有場所 (ある意味で) は、各アプリケーションが画像の読み込みと保存に使用できるフォト ライブラリです (ユーザーが許可した場合)。それとは別に、各アプリケーションは、独自のドキュメント、ライブラリなどのフォルダーにのみアクセスできます。
(もちろん、私はジェイルブレイクされたデバイスについて話しているわけではありません。)
「Martin R」が指摘したように、この目的で使用できる共通ディレクトリはどこにもありません。
両方のアプリを制御できるため、2 つのアプリがファイルやデータを共有できるようにするソリューションが得られます。この機能をサポートするには、両方のアプリを更新する必要があります。
ソリューションには、の使用が含まれますUIPasteBoard
。一般的なペーストボードを使用することも、「プライベート」という名前のペーストボードを使用することもできます。名前付きペーストボードを使用する場合、両方のアプリが名前に同意する必要があります (または、 を呼び出すときに名前を URL の一部として渡すことができますopenURL:
)。
setData:forPasteBoardType:
(名前付きまたは一般的な) ペーストボードでソース アプリを呼び出します。次に、ソース アプリは他のアプリへの URL を作成する必要があります。URL には、ペーストボードの名前 (該当する場合) と、データの設定に使用されるペーストボードの種類を含むいくつかのクエリ パラメータを含める必要があります。
受信アプリが起動されると、クエリ パラメーターを取得し、それらを使用してペーストボードを取得し、次に適切な型のデータを取得します。
渡す必要があるファイルが大きくなりすぎると、このソリューションに問題が生じる可能性があります。これを数メガバイトのファイルで使用しました。データをメモリにロードしているため、データ量には上限が必要です。転送が予想される最大のファイルを使用して、実際のデバイスで適切にテストしてください。