2014年10月23日

【Unity】iOS8からパス取得のアドレスが違う

Unityの標準パス取得メソッド3種類
なんかiOS8の環境で動かすと動かないプログラムがあったので調査してみました。

パス取得処理は以下の3種類

Application.dataPath
Application.persistentDataPath
Application.temporaryCachePath



iOS5とiOS7とiOS8で調査
環境:Unity4.5.5 各OSバージョンのiPhone

■iOS5
Application.dataPath = /var/mobile/Applications/[アプリID]/test.app/Data

Application.persistentDataPath = /var/mobile/Applications/[アプリID]/Documents

Application.temporaryCachePath = /var/mobile/Applications/[アプリID]/Library/Caches

■iOS7
Application.dataPath = /var/mobile/Applications/[アプリID]/test.app/Data

Application.persistentDataPath = /var/mobile/Applications/[アプリID]/Documents

Application.temporaryCachePath = /var/mobile/Applications/[アプリID]/Library/Caches

■iOS8
Application.dataPath = /private/var/mobile/Containers/Bundle/Application/[アプリID]/test.app/Data

Application.persistentDataPath = /var/mobile/Containers/Data/Application/[アプリID]/Documents

Application.temporaryCachePath = /var/mobile/Containers/Data/Application/[アプリID]/Library/Caches

2年前に書いてたコード
string path = Application.dataPath;
path = path.Replace("/Data", "");
path = path.Substring(0, path.LastIndexOf('/')) + "/Documents/";
if(!Directory.Exists(path)){
    Directory.CreateDirectory(path);
}

dataPathで取得してappファイルと同一階層に必ずあるDocumentsフォルダを取得する方法を行っていたのが問題になります。
iOS5以降からiCloudバックアップ対象としてDocumentsフォルダは特別扱いでした。
ここにバックアップする必要がないものを保存しているとリジェクト対象になるというものですね

当時のこちらの記事になるように
persistentDataPathを使うとリジェクト対象になる〜みたいな話があったので
ダウンロードする系はこのような処理で〜という内容が公式に発表されていました(たぶん私もそれみた)

iOS8では絶対動かないのでそう書いているソースがあるプロジェクトはご注意ください

タグ:unity
posted by ヒイロ at 11:50| 福岡 ☁| Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/407606889

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。