0

私のアプリは、次の理由でAppleによって拒否されました。

2.23

アプリが、AppStoreレビューガイドラインで要求されているiOSデータストレージガイドラインに準拠していないことがわかりました。

特に、起動時やコンテンツのダウンロード時に、アプリは10.3MBを保存することがわかりました。アプリが保存しているデータの量を確認するには:

  • アプリをインストールして起動します
  • [設定]>[iCloud]>[ストレージとバックアップ]>[ストレージの管理]に移動します
  • 必要に応じて、[すべてのアプリを表示]をタップします
  • アプリのストレージを確認してください

iOSデータストレージガイドラインでは、ユーザーがアプリを使用して作成したコンテンツ(ドキュメント、新しいファイル、編集など)のみを/ Documentsディレクトリに保存し、iCloudでバックアップできることを示しています。

私がしていることは、約10 MBのリソースフォルダーにデータベースを配信し、最初の起動時にそのデータベースをライブラリパスにコピーすることです(以下のコードを参照)。デバイス設定内で起動後にアプリの設定を見ると、実際には、ドキュメントとデータフォルダーにこの10MBのデータが含まれていると表示されます。アプリをインストールすると、そのデータベースは不要になるため、removeItemAtPathを使用してコピーを実行するときに、リソースフォルダーからDBを削除しようとしました。しかし、それには許可の問題があるようです。

これは、最初の起動時にデータベースにデータを入力するために使用しているコードです。

// Copy the database from the app resource, if it is not already existing in the library path

- (void) copyDatabaseIfNeeded {

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *dbPath = [documentsDir stringByAppendingPathComponent:@"abiliator.sqlite3"];

BOOL success = [fileManager fileExistsAtPath:dbPath]; 

if(!success) {

    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"abiliator.sqlite3"];
    success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];

    if (!success) {
        NSLog(@"Failed to create writable database file with message '%@'.", error);
    }
    else {
        success = [fileManager removeItemAtPath:defaultDBPath error:&error];
        if (!success) {
            NSLog(@"Failed to remove the source database file with message '%@'.", error);
        }

    }
}   
}

その問題について何時間も調査した後、私は実際には何も間違ったことをしていないと確信しています。ライブラリパスは、Appleのドキュメントに従って更新可能なファイルを保存する場所です。特に、データをバックアップして非表示にしたい場合、またはユーザーに公開したくない場合。どちらも私のアプリの場合です。データをバックアップしたいのですが、ユーザーにデータベースを見せたくないのです。したがって、ライブラリは完全に正しいようです。私が考えることができるのは、リソースディレクトリ内のデータベースのサイズだけです。私はそれを圧縮することによってそれを減らすことができました。しかし、制限は何ですか?レビューアもドキュメントも、それについて具体的なことを教えてくれませんでした。

では、実際には何が間違っているのでしょうか。また、リソースディレクトリが初期設定用のソースデータベースを保存するのに適切な場所ではない場合、プロジェクトで他にどのディレクトリを使用できますか?

ヒントをありがとう。レネ

4

1 に答える 1

0

Apple から、私が配信しているデータとは別のデータベースにユーザー データを保存することになっているという返信がありました。私はあまり熱心ではありませんが、コードの複雑さが不必要に増加し、アプリ内のユーザーデータが配信するデータよりも大きくなる可能性があるため、今すぐ正しいソリューションアプローチを取得できるようにしたいと思います. 私が実装しようとしているのは、/Library/UserDB と /Library/AppDB の 2 つのディレクトリです。AppDB には配信された DB が含まれ、UserDB にはユーザー データのみが含まれ、AppDB Dir には非バックアップとしてフラグを立てます。それが Apple を喜ばせ、私のアプリがその件で承認されると思いますか? 実装を開始する前に、そのアプローチについて意見をいただければ幸いです。

于 2012-04-28T09:03:13.313 に答える