はじめまして、一之瀬と申します。
Corona無料版にてiPhone版のアプリを開発・運用しております。
アプリ本体の容量をなるべく減らしたく、また、今後増えていくコンテンツをふまえ、画像や音源ファイル等の素材データを別途契約しているサーバよりネットワーク経由でダウンロードし保管しております。
具体的には、コンテンツ上で様々な「銃」があり、ユーザーがアンロックをすると関連ファイルをZIP形式にてダウンロード、CachesDirectoryに展開しております。
ひとつのZIPファイルは3~10MB程度ありますので、再インストール時やユーザーによる意思(コンテンツ毎の再ダウンロードボタンを押す)を除き、再度ダウンロードする事は想定しておりません。
以前はDocumentsDirectoryに保存しておりましたが、AppleよりiCloudのバックアップ対象となる為、CachesDirectoryに置く事と警告を受け、リジェクトをされた経緯がございます。
(iCloudのバックアップは必要ございません。また、ユーザーにより素材を見られてしまうのは避けたいです。)
最近になってようやく理解してきたのですが、CachesDirectoryは端末の容量等の関係でOSにより随時削除される事があるとの事で、そのせいか、あきらかに素材不足によるエラー報告がユーザー様より時折入ってきている状況です。
そこで、上記の素性のファイル群を置くべき場所で現在悩んでおります。
Appleのドキュメントを見る限り、
・Library
・Library/Cache
・Library/Application Support (※恐らくここに置くのが正解)
・Library/独自ディレクトリを作っても可
という記述がございますが、CoronaSDKにて上記ディレクトリにアクセスする術がない様に見受けられます。
現状のまま、CachesDirectoryに格納しファイルがあるか確認をしてなければ再ダウンロードというロジックを考えておりますが、OSにより削除されるタイミングがいまいち良く分からない事と、元がZIPファイルですので「ファイルの一部」の存在可否を判断するのが難しいことから、攻めあぐねている状況です。
ZIP内容のファイル数をカウントしておき、展開後のディレクトリで都度これを算出、異なるなら削除れていると判断し再ダウンロードするのが現時点では確実かなとも思っております。
質問としましては、
1.iOSによるキャッシュディレクトリの具体的な削除タイミング。(アプリ起動中にも削除され得るということは分かっております。)
2.CoronaSDKからのLibrary/Application Supportへのアクセス方法。
3.その他、このようなケースの場合の皆様の対応方法
をお聞きできれば幸いです。
ちなみにAndroidの場合は、system.CachesDirectory = system.DocumentsDirectoryということだと理解しておりますので、system.DocumentsDirectoryに保管しております。
何卒よろしくお願い致します。