【Swift】ファイルアプリからDocumentsフォルダへアクセス許可する方法!

この記事からわかること
- Swiftで作成したiOSアプリのDocumentsフォルダへデバイス標準装備の「ファイル」アプリからアクセスする方法
- UIFileSharingEnabledキーとLSSupportsOpeningDocumentsInPlaceキーの意味
\ アプリをリリースしました /
iOS11以降からアプリ内から操作できるDocumentsフォルダがファイルアプリを通じてアクセスできるようになりました。その設定方法や操作方法をまとめていきます。

iOSアプリのファイルシステム
そもそもiOSアプリではアプリ内で生成したファイルなどをサンドボックス構造になっているファイルシステムの中に保存しています。サンドボックス構造になっていることで外部との繋がりが遮断され不正なアクセスを防ぐことができています。
おすすめ記事:iOSのファイルシステム:サンドボックス構造とは?
ファイルシステム
ファイルシステムの中には役割ごとにディレクトリが分けられており、それぞれに格納するファイルもガイドラインによって定義されています。
参考文献:FileSystem Programming Guide
ですがiOS11以降からDocumentsフォルダへデバイス標準装備の「ファイル」アプリからアクセスすることができるようになりました。
ファイルアプリからDocumentsフォルダへアクセス許可する方法
アクセスを許可するためには「info.plist」に以下2つのキーを追加し値に「Yes」を渡します。
- UIFileSharingEnabled (Application supports iTunes file sharing)
- LSSupportsOpeningDocumentsInPlace (Supports opening documents in place)

アプリがiTunesを介してファイルを共有するかどうかを指定するキー。
LSSupportsOpeningDocumentsInPlace
ファイルアプリからDocumentsのコピーではなく元のDocumentsを開くことを許可するか指定するキー。
これでファイルアプリから設定したアプリのDocumentsフォルダにアクセスできるようになりました。しかしDocumentsフォルダ内にファイルが存在しない場合は表示されないようなのでファイルを生成して確認してみます。
Documentsフォルダ内にファイルを生成して確認する
Documentsフォルダ内にファイルを生成するにはFileManager
クラスを使用します。ここでは使用方法は解説しませんので以下の記事を参考にしてください。
おすすめ記事:【Swift】FileManagerでファイルを保存!操作方法や格納場所
以下はコピペで動作しますので試しにボタンを押してファイルを生成しファイルアプリから存在するかチェックしてみてください。
シミュレーター内の「ファイル」アプリから、「このiPhone内」>「アプリ名」>「ファイル名」を確認し以下のように生成したファイルを確認できれば成功です。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。