由于“不备份”原因,苹果开发者拒绝了iPhone应用程序。现在我该怎么做?

问题描述:

由于“不备份”原因导致应用程序被拒绝原因由于“不备份”原因,苹果开发者拒绝了iPhone应用程序。现在我该怎么做?

我尝试了一件事来消除此问题。我从Apple技术支持获得了一小段代码,并根据iOS guideLines在我的项目中使用此代码。首先,我在我的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"]]; 
} 

现在我只想知道这是否行。我可以重新上传我的申请iTunes Connect吗?

+0

为什么选了票?当我在IOS新手时,我问了这个问题。现在我已经给出了关于这个问题的答案...但是仍然得票低于...... :( – TheTiger 2012-11-03 16:06:57

我找到了解决此问题的解决方案。我们不应该保留任何大的内存数据库。 为了消除这个问题,我删除了所有放置在db.sqlitedb.sqlite是我的数据库名称)的图像。现在我做了一个新的db.sqlite。在这个我只保留图像名称,图像保存在我的项目文件夹。

如果您的应用程序中有大量数据库,那么您将不得不遵循iCloud。 现在Apple接受我的申请,并获得批准。 :-)

也阅读了本 - 数据存储的准则

  • 无法重新创建,如文档,或者如果设备被损坏,将无法用户特定的数据

    关键数据,进入Application_Home>/Documents目录下的<,除非另有说明,否则将由iCloud备份。

  • 可以重新创建的缓存数据(如本地数据库或下载的图像)进入< Application_Home>/Library/Caches目录,不会被iCloud备份。如果iOS的磁盘空间不足,可能会在某些时候清除此数据。

  • 在应用程序启动(例如临时文件高速缓存)之间临时数据是临时数据,并且不会被iCloud备份到< Application_Home>/tmp目录中。你应该永远记得自己删除存储在这里的文件。

  • 当设备脱机时(例如飞行模式),需要持久保存且可用的离线数据将进入< Application_Home>/Library/Private Documents目录,并且不会由iCloud备份,但它也会在磁盘空间不足的情况下不会被iOS清除。有关iOS中的私人文档的更多信息。

您应该在创建文件夹的位置设置属性。如果在didFinishLaunching期间尝试设置属性并且文件夹尚不存在(即,首次启动时),那么一旦它们被创建,它们将不会设置属性。在您的应用下次启动时它会正确设置,但您仍然会在第一次和第二次运行之间创建备份。

此外,我相信库/库文件夹会自动从备份中排除。