4

Documentsディレクトリ(ファイル、データベース、およびある種のアプリ関連のもの)からほとんどのデータを維持しているため、アップルのストレージガイドラインが私にとってより多くの問題を引き起こしています.最近、バイナリファイルをアプリストアにアップロードしましたが、拒否されましたアップルはApple 拒否レポート、この時点に従ってレポートを提供してくれました。コードを以下のように変更します

- (NSString *)applicationDocumentsDirectory {
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSURL *pathURL= [NSURL fileURLWithPath:documentPath];
[self addSkipBackupAttributeToItemAtURL:pathURL];
return documentPath;

}

 - (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;
}

私の質問:

1. addSkipBackupAttributeToItemAtURL: メソッドをドキュメント ディレクトリに直接使用して、ドキュメント ディレクトリ内のすべてのファイルの iCloud バックアップを防止できますか。

2.上記のコードは、ドキュメント ディレクトリに「バックアップしない」属性が含まれていないために最後のバイナリが拒否された場合に、アプリ ストアでアプリを承認するのに十分です。

4

2 に答える 2

1

フォルダ全体のバックアップを回避するために、この属性をフォルダに設定できる必要があります。

ただし、完全なDocumentsフォルダに対してこれを行うのは良いアプローチではないかもしれないことに注意してください。まず第一に、これはあなたがアプリにバックアップされたコンテンツがないという状況を作り出します、それで電話の復元でアプリはバニラ状態になります。また、これは「Appleが意図した」方法ではなく、アプリの拒否につながる可能性があることも想像できます(常に当て推量)。可能であれば、バックアップされていないコンテンツのサブフォルダーをDocumentディレクトリに作成し、そこにすべてを配置します(ただし、このアプリのバージョンが既にストアにある場合は、移行コードが必要になる場合があります)。

ストレージガイドラインでは、ユーザーが作成した/再作成できないコンテンツをDocumentsディレクトリに保存でき、ダウンロードしたコンテンツなど、Cachesディレクトリに配置できないものにマークを付けるだけで済みます(たとえば、ユーザーがこのコンテンツを期待している場合)。オフラインで利用できるようにする)。

于 2011-11-11T10:04:47.903 に答える