12

多くの開発者と同様に、私も最近 Apple から電子メールを受け取り、データをドキュメント ディレクトリから別のフォルダに移動して、iCloud へのより効率的なバックアップを可能にする必要があると述べました。

最近のテストでは、[あなたのアプリ] はドキュメント フォルダーにかなりの量のデータを保存しているようです。

iCloud バックアップは各ユーザーの iOS デバイスに対して Wi-Fi 経由で毎日実行されるため、アプリによって保存されるデータの量を最小限に抑えて、可能な限り最高のユーザー エクスペリエンスを確保することが重要です。

Instapaper で有名なMarco Arment は、この問題をよく理解しています。つまり、ダウンロード可能なファイルの推奨される保存場所は /Library/Caches です。ただし、問題は、デバイスのストレージが不足していると OS が判断すると、/tmp と /Caches の両方が「消去」される可能性があることです。アプリがクリーンアップされると、アプリによってダウンロードされ、ユーザーによって保存されたデータは失われます。当然、ユーザーは Apple ではなくあなたを責めます。

何をすべきか?

4

2 に答える 2

15

iOS 5.0.1 では、この問題に対処するためのフラグが導入されました。

https://developer.apple.com/library/ios/#qa/qa1719/_index.html

/Library/ に /Library/PrivateDocs のようなフォルダーを作成し、そこにファイルを配置することをお勧めします。ただし、/Library/Cache または tmp 内のファイルを除く /Library 内のすべてのファイルがデフォルトでバックアップされるため、「バックアップしない」フラグを設定する必要もあります。次のコマンドを使用して、PrivateDocs フォルダーにフラグを設定します。

#include <sys/xattr.h>
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    const char* filePath = [[URL path] fileSystemRepresentation];

    const char* attrName = "com.apple.MobileBackup";
    u_int8_t attrValue = 1;

    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
    return result == 0;
}
于 2011-11-16T01:47:48.957 に答える
3

Library/Cachesおそらく多くのアプリにとって良い答えです。特にアプリが正常に動作する場合、キャッシュされたデータは失われ、キャッシュをクリアしても、ユーザーがキャッシュすることを選択した可能性のあるデータとそのデータをどこから再取得できるかのすべての記録が破棄されるわけではありません。

に属さないデータを持つアプリの場合は、 をCaches検討してLibrary/Application Supportください。

http://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGUIde/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1

アプリケーションのサポート:

このディレクトリを使用して、ユーザーのドキュメントに関連付けられたものを除くすべてのアプリケーション データ ファイルを保存します。たとえば、このディレクトリを使用して、アプリケーションによって作成されたデータ ファイル、構成ファイル、テンプレート、またはアプリケーションによって管理されるその他の固定または変更可能なリソースを格納できます。アプリケーションは、このディレクトリを使用して、最初にアプリケーションのバンドルに含まれていたリソースの変更可能なコピーを保存する場合があります。ゲームはこのディレクトリを使用して、ユーザーが購入し、サーバーからダウンロードした新しいレベルを保存する場合があります。

このディレクトリ内のすべてのコンテンツは、名前がアプリケーションのバンドル識別子または会社の名前であるカスタム サブディレクトリに配置する必要があります。

iOS では、このディレクトリの内容は iTunes によってバックアップされます。


残念ながら、Application Support ディレクトリはまだバックアップされており、Apple の新しいデータ ストレージ ガイドラインに該当します。レビュー担当者がバックアップ ファイルの合計サイズについてどれだけ慎重に選択するかによっては、これでも却下される可能性があります。

于 2011-10-14T08:10:24.950 に答える