[Cocos2d-x] CCFileUtils::getWriteablePath を使用するときの注意点
ファイルを保存するときに保存する場所のパスを求めるのに CCFileUtils::getWriteablePath を使用することはよくあると思います。iOS, Android など OS に応じて適切なパスを返してくれるので重宝します。
ただ、iOS では気をつけないとリジェクトされる可能性があります。
iCloud がリリースされてからアップルのガイドラインが変更されて、ユーザが作成したコンテンツ(UGC)でないものをアプリの Documents 以下に保存しているとリジェクトされてしまいます。これは iCloud のバックアップ対象が Documents も含まれているため、バックアップ容量を減らすための処置のようです。ダウンロードしたファイルやキャッシュなどを Documents 以下に保存していると引っかかります。SQLite のファイルもダメです。
このようなファイルは Libries/Cache 以下に保存しなければいけないのですが、前述の CCFileUtils::getWriteablePath メソッドを iOS で使用すると Documents のパスを返します。
自分で Libraries/Cache のパスを取得してもいいのですが、Android などの対応もワンソースでやりたいので、CCFileUtils::getWriteablePath を以下のように修正して対応しました。(作成しているアプリが UGC を保存することがないので)
std::string CCFileUtils::getWriteablePath() { // save to document folder // 下記行を NSCachesDirectory に変更 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; std::string strRet = [documentsDirectory UTF8String]; strRet.append("/"); return strRet; }
関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType
1cordless…
…