4

Documents ディレクトリを使用して、サーバーからダウンロードしたいくつかのファイルを保存しているため、アプリが拒否されました。

Apple のドキュメントからこれを読みました: https://developer.apple.com/library/ios/#qa/qa1719/_index.htmlそして、このコードを見つけました: addSkipBackupAttributeToItemAtURL -> NSString parameter?

また、このコードはiOSバージョン> = 5.0.1で役立つことも読んでいました。また、iOS バージョン < 5 では、iCloud を使用してユーザー データをバックアップしません。しかし、その iOS == 5.0 は iCloud を使用してデータをバックアップしますが、フラグは機能しません。

だから、私は2つの質問があります:

最初に、アプリケーション内のファイル (データベースなど) が機能する必要があります。そして、それらのファイルを Caches ディレクトリに保存すると、iOS が必要なときにいつでもファイルを削除できます。したがって、ファイルを Documents ディレクトリに保存しています。

/Documents/db.db
/Documents/my.plist

その後、そのディレクトリにファイルを保存し、そのディレクトリに配置したすべてのファイルに対してメソッド addSkipBackupAttributeToItemAtURL を呼び出します。しかし、これがメソッドが機能しているかどうかをテストする方法がわかりません。

ここで読みましたiOS 5.0.1 : フォルダーが iCloud の「バックアップしない」とマークされていることを確認する方法は? シミュレーターを使用すると、アプリケーションのディレクトリに移動してこのコマンドを実行できます

xattr -plxv com.apple.MobileBackup <file name> 

ファイルがバックアップされないようにマークされているかどうかを確認します。

しかし、コマンドラインでそのコマンドを実行すると、すべてのファイルに対して次の結果が得られます。

xattr: my.plist: そのようなものはありません xattr: com.apple.MobileBackup

したがって、最初の質問は、Documents ディレクトリの下のファイルがバックアップされないように正しくマークされていることを確認するにはどうすればよいかということです。私は自分のアプリを AppStore に再度アップロードしたくありません。また、Apple の人々がそれを再び破棄することもありません。

第二に、私のアプリケーションは iOS 5 で実行されます。また、ユーザーが iOS 5.0 を使用している場合はすべてのファイルをチェックして Caches ディレクトリに保存し、ファイルを使用する必要があるたびに「静止画」があるかどうかを確認したくありません。毎回ダウンロードできない 500 MB のデータベースがあります。

2 つ目の質問は、「iOS 展開ターゲット」で 5.1 を選択し、[ビルド設定] > [ベース SDK] で 5.1 も選択した場合、iOS バージョンが 5.1 未満のユーザーはアプリをダウンロードできないということですよね? ですから、iOS 5.0 のユーザーが自分のデータを盗むことを恐れる必要はありませんよね?

4

2 に答える 2

2

答えは非常に簡単だと思います。ドキュメント ディレクトリを使用しないでください。

ドキュメント ディレクトリを使用せず、iCloud の設定をいじらない場合、そのデータはバックアップされません。

この質問への回答で説明されているように、ライブラリ フォルダーを使用できると思います: How can I get a writable path on the iPhone?

編集:コメントに答えるために、 http://developer.apple.com/library/ios/DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuningのアップルのドキュメントによると、ドキュメントデータのみがバックアップされたと仮定するのは間違っていました.htmlですが、Library フォルダーがバックアップされていないデータベースに最適な場所であると私は信じています。

ただし、setResourceValue:forKey:error: メソッドを使用して、同じドキュメントで説明されているように、非バックアップ フラグを設定する必要があります。

iOS バージョン == 5.0 でデータをバックアップしない方法は、ドキュメントでは明確ではありません。

それが問題にならない場合は、iOS 5.1 以降でのみ動作するようにアプリをロックします (XCode の最小 iOS バージョンで動作するようにアプリを設定し、ビルド全体をクリーンアップして再度ビルドすることを忘れないでください)。

于 2012-06-13T12:49:38.047 に答える