私のアプリの 1 つに対する重要なバグ修正アップデートが、iCloud データ ストレージ ガイドラインに違反している疑いがあるため、最近拒否されました。
私のアプリがデータを保存する方法は次のとおりです (私のアプリの最初のバージョンが 2009 年に承認されて以来、問題はありませんでした)。
- 起動時に、「スターター」SQLite3 データベースをアプリ バンドルからドキュメント フォルダーにコピーします。
- データベースには、基本的なスキーマといくつかのサンプル データが含まれているため、ユーザーはアプリの使用方法を確認できます。それは小さく、わずか 3MB 未満です。
- ユーザーの今後の作業は、このデータベース ファイルにのみ保存されます。彼らはサンプルを削除したり保持したり、独自のデータを大量に追加したりするかもしれませんが、そのデータベース ファイルは常にそこにあります。
今年初めのアップデートも同様の理由で却下されましたが、上記の説明をしたところ、アプリのステータスが「却下」→「審査中」→「App Storeで処理中」に変わっていました。彼らは私に何の説明も送ってくれなかったので、レビュアー側の単なる誤解だと思いました.
今回、レビュアーは私の説明に対して、ユーザーが生成したもの以外のデータは iCloud に保存すべきではなく、アップデートは「拒否」状態のままであると単純に答えました。
しかし、私はここで何をすべきか理解していません。ユーザーの作業はすべてデータベースに保存されるため、これを iCloud バックアップから除外したり、キャッシュ フォルダーに保存したりすることはできません。また、アプリは同じデータベース ファイルから動作するため、「ユーザーが生成した」データと「ユーザーが生成していない」データをきれいに分離することはできません。データベースのファイル名とディレクトリの場所は同じままですが、初期の非ユーザー生成データはユーザー自身のデータにすぐに置き換えられます。
また、データベースにサンプル データがなくても、データベースを利用するアプリは起動時に空のデータベースを生成する必要があります。アプリのデータベース スキーマだけが保持されている場合でも同様です。
これは非常に一般的な問題に違いありませんが、残念ながら、バックアップをオフにするだけでは問題ありません。ユーザーは、私のアプリに保存するデータに多くの労力を費やしており、iCloud バックアップは彼らにとって非常に重要です。
この時点でどのようなオプションがありますか? ここに私が見ることができるものがあります:
もう一度 Apple に連絡して、何が起こっているのか説明してみてください。
ファイルのバックアップ属性を NO に設定し、ユーザーが最初の変更を行ったときにのみ YES に切り替えることはできますか? それは技術的に大丈夫ですか、そしてAppleと大丈夫ですか?
サンプル データをデータベースから削除します。これはユーザビリティに非常に悪いものであり、サポートの負荷が増大しますが、更新が承認されるのであれば喜んで実行します。ただし、空のデータベース スキーマを保持するために起動時にスタブ データベースを作成する必要があるため、承認プロセスに違いが生じるかどうかはわかりません。
泣く。
誰にもアドバイスはありますか?私と同じようにデータベースを使用するアプリが他にもたくさんあると想像する必要がありますが、バックアップを無効にするオプションはありません。
また、私が行った変更には別のテストとアプリのレビューが必要になることも非常に憂鬱です。これにより、重要な更新がさらに2〜3週間遅れます. :/
更新:別のオプションがあるかもしれません:ドキュメントフォルダーの使用に特に問題があるように思われるため、単にファイルを のLibrary/
代わりに保存できますか? Documents/
ファイルが に保存されている場合、ファイルはバックアップされLibrary/
ますか?
更新 2 : 私が最も混乱しているのは、データベースに支えられたアプリ (コア データを使用している場合でも) は、少なくともアプリのスキーマを含むデータベース ファイルを作成する必要があることです。問題は、データベースのサイズが大きすぎることだけですか? データベースに支えられたアプリケーションが、起動時にデータベースを作成する必要を回避する方法がわからないためです。
更新 3 : Core Data ではなく、カスタム SQLite インタラクション レイヤーを使用しています。また、サンプル データはスターター イメージで構成されており、ユーザーがアプリの使用を開始すると、おそらくそれらを削除することになります。