Unityでデータ保存時に気をつける事 ~iOS Data Storage Guidelines~

  • 29
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

実体験ですが、いつもAppleの審査は経験から大体気をつけなければいけないことは把握してるので、特に気にせず審査に出したのですが、見事に規約に引っかかってしまった話。

詳しくは 今こそ復習したい、iOSアプリのディレクトリ構成 を参考。

Unityで外部データ保存時には Application.persistentDataPath を使用するかと思うが、このパスがiOSだとiCloudでバックアップされる領域に保存される。なので、何も気にせず外部データを保存していくと審査に落ちる(2.23 – Apps must follow the iOS Data Storage Guidelines or they will be rejected)。ちなみにどのくらいの容量で審査に落ちるかは明記されていない。審査員の気分次第。なので、基本的には対策しておいた方が吉。

対応方法としては大きく分けて2種類。

(1)iCloudでバックアップされない領域にデータを保存する(tmpフォルダ等)
(2)バックアップが不要なファイルは "do not back up" attribute を付ける

(1)に関してはUnityからtmpフォルダのパスを取得するのは出来ないので自作する必要あり。
(2)はUnityがバックアップ不要設定を行うメソッドが提供されている。
自分は(2)で対応した。(1)はネイティブのパスをいじる必要があり、ちょっと危険を伴うので、Unity依存で処理が完了できる方法をとった(というかリリースに迫られた状況だったから少しでも危険を回避したかったw)。

#if UNITY_IOS
UnityEngine.iOS.Device.SetNoBackupFlag(path);
#endif

これだけ。pathにバックアップ不要ファイルへのパスを設定する。ディレクトリも設定出来たはず。

自分が初めてUnityアプリをリリースした2年前くらいに比べて、最近かなり審査が厳しくなってきてるので、不安因子は出来る限り消すべし!

※※※ 追記 ※※※※※※※※※
Application.temporaryCachePath を使用すれば Library/Caches 以下のフォルダパスを取得出来るか(iCloudバックアップ対象外)。ただ Caches 配下はOSによって勝手に消される可能性があるからちょっと不安ではある(;^_^A

Author

http://okamura0510.jp