2012-03-03 1 views
2

アプリケーションが原因理由理由を「バックアップしない」ため、Apple開発者によるiPhoneアプリケーションの拒否。今私は何をしますか?

私はこの問題を取り除くために一つのことを試してみました「バックアップしない」に拒否します。 Appleテクニカルサポートの小さなコードを1つ手に入れ、iOSのガイドラインに従ってこのコードをプロジェクトで使用しました。まず、私はその後、以下の機能を貼り付け、私のappdelegate.m一部に

#import<sys/xattr.h>  

をヘッダファイルを追加しました。

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

起動が完了すると、私のappdelegateに上記の関数を呼び出します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 

    [self addSkipBackupAttributeToItemAtURL:[NSURL URLWithString:@"<Application_Home>/Library/Caches"]]; 
    [self addSkipBackupAttributeToItemAtURL:[NSURL URLWithString:@"<Application_Home>/tmp"]]; 
    [self addSkipBackupAttributeToItemAtURL:[NSURL URLWithString:@"<Application_Home>/Library/Private Documents"]]; 
} 

今、私はこのOKかどうかを知りたいです。 iTunes Connectに自分のアプリケーションを再アップロードすることはできますか?

+0

私はIOSで新しくなったときにこの質問をしました。今私はすでにこれについての答えを与えている...しかし、まだ投票を得て.... :( – TheTiger

答えて

3

私はこの問題に関する解決策を見つけました。大規模なメモリデータベースを保持すべきではありません。 この問題を解決するため、db.sqlitedb.sqliteは私のデータベース名)に配置されたすべての画像を削除しました。今私は新しいdb.sqliteを作った。この中で私は画像名だけを保持しており、画像はプロジェクトフォルダに保存されています。

アプリケーションに重いデータベースがある場合は、iCloudに従う必要があります。 Appleは自分のアプリケーションを承認し、承認されました。 :-)

もこれを読んで - データ・ストレージ・ガイドラインにそのような文書や機器が損傷した場合には失われることになり、ユーザー固有のデータとして再作成することはできません

  • 重要なデータを、に入り、 < Application_Home>/Documentsディレクトリにあり、特に指定しない限り、iCloudによってバックアップされます。

  • ローカルデータベースやダウンロードしたイメージなど、再作成できるキャッシュデータは< Application_Home>/Library/Cachesディレクトリにあり、iCloudによってバックアップされません。 iOSのディスク容量が少なくなった場合、このデータはある時点でパージされる可能性があります。

  • 一時ファイルキャッシュなど、アプリケーションの起動時に一時的に使用されない一時データは、< Application_Home>/tmpディレクトリにあり、iCloudによってバックアップされません。ここに保存されているファイルは、必ず自分自身で削除してください。

  • オフライン時(機内モードなど)に永続的で利用可能なオフラインデータは、< Application_Home>/Library/Private Documentsディレクトリにあり、iCloudでバックアップされることはありませんが、ディスク容量の少ない状況ではiOSによってパージされません。 iOSのプライベートドキュメントの詳細については、こちらをご覧ください。

0

フォルダを作成する時点で属性を設定する必要があります。 didFinishLaunching中に属性を設定しようとしたときに、フォルダがまだ存在しない(つまり、最初の起動時に)と、それらが作成されると、属性が設定されません。次回のアプリ起動時に正しく設定されますが、1回目と2回目の実行の間にバックアップが作成されます。

また、ライブラリ/キャッシュフォルダは、私が信じるバックアップから自動的に除外されます。

関連する問題