アプリの起動時に、リソース フォルダーから iOS デバイスのドキュメント ディレクトリにライブラリがコピーされます。これは初回起動時の 1 回限りのプロセスであり、二度と触れることはありません。Apple は今日、私のアプリを次のように拒否しました。
お客様のアプリは iOS データ ストレージ ガイドラインに準拠していないことが判明しました。これは、App Store レビュー ガイドラインに準拠していません。
iOS データ ストレージ ガイドラインでは、ユーザーがアプリを使用して作成したコンテンツ (ドキュメント、新しいファイル、編集など) のみを iCloud でバックアップする必要があることを示しています。
アプリで使用される一時ファイルは、/tmp ディレクトリにのみ保存する必要があります。ユーザーがアプリを終了するときに、この場所に保存されているファイルを削除することを忘れないでください。
再作成できるが、アプリが適切に機能するために保持する必要があるデータ、または顧客がオフラインで使用できることを期待しているデータは、「バックアップしない」属性でマークする必要があります。
NSURL
オブジェクトの場合、属性を追加して、NSURLIsExcludedFromBackupKey
対応するファイルがバックアップされないようにします。CFURLRef
オブジェクトの場合は、対応する属性を使用してくださいkCFURLIsExcludedFromBackupKey
。
バックアップしない属性を設定する方法や、それが必要かどうかがわかりません。私のコードに基づいてこれがどのように行われるか教えてもらえますか?
-(void) progress
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;
NSString *dataPath = [documentPath stringByAppendingPathComponent:pathWeSet];
if (![fileManager fileExistsAtPath:dataPath]) {
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSString *dataPath = [bundlePath stringByAppendingPathComponent:pathWeSet];
timer = [NSTimer timerWithTimeInterval:0.4 target:self selector:@selector(updateProgressView) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[timer fire];
if (dataPath) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[fileManager copyItemAtPath:dataPath toPath:dataPath error:nil];
});
}
}
}
ありがとう