2011-10-14 9 views
11

多くの開発者のように、iCloudへのより効率的なバックアップを可能にするために、ドキュメントディレクトリから別のフォルダにデータを移動する必要があると、Appleから最近電子メールが届きました。iCloud + iPhoneドキュメントフォルダ内のメディアの保存

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

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

Marco Arment

は、ダウンロード可能なファイルを格納するための推奨される場所は、/ライブラリ/キャッシュにあることがある問題について良いテイクを持っています。しかし、問題は、OSがデバイスのストレージが不足していると判断した場合に、/ tmpと/ Cachesの両方を 'きれいにする'ことができるということです。あなたのアプリがきれいにされている場合、あなたのアプリによってダウンロードされ、あなたのユーザーによって保存されたデータはなくなります。当然、ユーザーはあなたを非難し、Appleは責めません。

どうすればよいですか?

+0

あなたはそれを考慮する必要があると言いますか?一時的なストレージが「最良のユーザーエクスペリエンス」ではないという主張をすることができれば、合法的に「われわれはそれを考慮したが、それは良いユーザー体験ではない」と言うことができます。 – ceejayoz

+3

私はすぐにそうする必要があると感じています。 iCloudのバックアップは、今後数か月間に大規模なインターネット帯域幅を使用することになります。ユーザーはデフォルトで5ギガのストレージしか取得できないことを覚えておいてください。だからこそ、Appleは開発者向けのアプリに重要なデータしか持たないようにすることを熱望しています。私は彼らが私たちに「クリーニング」からも保護された非iCloudディレクトリを作成するオプションを与えることを望みます。 –

答えて

15

のiOS 5.0.1は、この問題に対処するためのフラグを導入しました:

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

彼らの勧告は、/ライブラリ/ライブラリ/のように/ PrivateDocsにフォルダを作成し、そこにファイルを置くことです。しかし、/ Library/Cacheまたはtmp内のファイルを除くすべてのファイルがデフォルトでバックアップされるため、 "do not backup"フラグを設定する必要があります。このコマンドで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; 
} 
+0

5.0.1でこれを見ることができてうれしかったし、これを正しい答えとして選択しました。当時良かった以前の答えに同意してはいけません。ただ、これはこれを行う方法です。 –

+2

コードは廃止されました。 URLはまだ有効ですが、そこにはiOS 5.1以降のコードがあります。 –

+0

ここでこの方法を使用していますか? – Purva

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によってバックアップされます。


残念ながら、アプリケーション・サポートディレクトリは、まだバックアップされ、Appleの新しいdata storage guidelinesに該当されます。レビュー担当者は、バックアップされたファイルサイズの合計をどれくらい敏感にするかによって、依然として拒否につながる可能性があります。

関連する問題