LoginSignup
0
2

More than 1 year has passed since last update.

スマートフォンアプリにおけるファイルの保存先

Posted at

react nativeのアプリを書く時に、各OSごとに保存先の方針の違いに混乱したため、備忘録としてまとめました。

iOSの場合

判断基準 具体例 保存場所
ユーザが作成した(一時的ではない)データ
アプリが再作成できないデータ
ユーザに公開していいもの
ユーザデータ
ダウンロードした画像
Application_Home/Document
再ダウンロードできるデータ
再作成できるデータ
バックアップを取らなくていいもの
データのキャッシュファイル
ドキュメントデータ
Application_Home/Library/Caches
一時的にのみ使用されるデータ
勝手に消されても問題がないもの 
起動ごとに変わる一時的なデータ  Application_Home/tmp
  • 一番上の項目だけが、iCloudバックアップ対象
  • また、/tmpディレクトリのものはアプリが実行されていない時に、システムに勝手に削除される可能性があるので扱いに注意すること

Androidの場合

※Androidは端末によってファイルの保存場所が異なるため、ファイルパスではなくアクセス手段としてまとめます

判断基準 具体例 保存場所へのアクセス手段
アプリ固有のファイル アプリ独自のデータ 内部ストレージからは getFilesDir() または getCacheDir()
外部ストレージからは getExternalFilesDir() または getExternalCacheDir()
他のアプリと共有するメディアファイル 他のアプリと共有する画像、音声ファイル MediaStore API
ダウンロードしたファイル DLした画像、音声ファイル ストレージアクセスフレームワーク
アプリ設定 アプリの設定情報 Jetpack Preferences library
データベース ローカルのデータベース Room persistence library
  • アプリの固有ファイルについて、外部ストレージにある場合は他のアプリからアクセスできるが、内部ストレージにある場合は他のアプリはアクセスできないので注意が必要
  • アプリアンインストール時にはアプリ固有のファイル以外は削除されない
  • 内部ストレージと外部ストレージの違い
    • 内部ストレージ
      • 外部ストレージに比べ容量が少ない
      • 全てのデバイスが利用可能→信頼性が高い
    • 外部ストレージ
      • 内部ストレージに比べ容量が大きいことが多い
      • Android9以前は権限が必要だった→Android10以降はデフォルトで付与されるようになった

参考

0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2