Разработчики Apple отклонили приложение для iPhone по причине «не выполнять резервное копирование». Что мне теперь делать? - PullRequest
2 голосов
/ 03 марта 2012

Приложение отклонено по причине «не выполнять резервное копирование»

Я попытался решить эту проблему одним способом.Я получил один небольшой код от службы технической поддержки Apple и использовал этот код в своем проекте в соответствии с руководящими принципами iOS.Сначала я добавил заголовочный файл в мою appdelegate.m part

#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"]];
}

Теперь я просто хочу знать, нормально это или нет.Могу ли я повторно загрузить свое приложение на iTunes Connect или нет?

Ответы [ 2 ]

3 голосов
/ 27 апреля 2012

Я нашел решение по этой проблеме.Мы не должны хранить большие базы данных.Для устранения этой проблемы я удалил все изображения, которые были помещены в db.sqlite (db.sqlite - это имя моей базы данных).Теперь я сделал новый db.sqlite.При этом я сохранил только имена изображений, а изображения хранятся в папке моего проекта.

Если в ваших приложениях имеется тяжелая база данных, вам придется следовать iCloud .Теперь Apple принимает мое заявление, и оно было одобрено.: -)

Также прочтите это - рекомендации по хранению данных

  • Критические данные, которые не могут быть воссозданы, такие как документы или пользовательские данные, которыебудет потеряно, если устройство будет повреждено, перейдет в/ Documents Documents и резервное копирование iCloud, если не указано иное.

  • Кэшированные данные, которые можно воссоздать, такие как локальная база данных или загруженные изображения, попадают в/ Library / Caches каталог и не будет заархивирован iCloud.Эти данные могут быть удалены в какой-то момент, если у iOS недостаточно места на диске.

  • Временные данные, которые являются временными и не используются между запусками приложений, например, временный файловый кэш, попадают вКаталог / tmp и не будет сохранен в iCloud.Вы должны всегда помнить об удалении файлов, хранящихся здесь.

  • Автономные данные, которые должны быть постоянными и доступными, когда устройство находится в автономном режиме (например, режим полета), поступают в/ Library / Private Documents и не будет заархивирован iCloud, но он также не будет очищен iOS в ситуации нехватки дискового пространства.Для получения дополнительной информации о личных документах в iOS.

0 голосов
/ 05 марта 2012

Вы должны установить атрибут в точке, где вы создаете папку. Если вы попытаетесь установить атрибуты во время didFinishLaunching, а папки еще не существуют (т.е. при первом запуске), то после того, как они будут созданы, у них не будет установлен атрибут. Он будет настроен правильно при следующем запуске приложения, но вы все равно будете создавать резервные копии между первым и вторым запусками.

Кроме того, папка Library / Caches автоматически исключается из резервных копий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...