iphone - 由于 "do not back up"原因,苹果开发者拒绝了 iPhone 应用程序。现在我该怎么做?

标签 iphone objective-c ios xcode

申请因“不备份”原因被拒绝

我尝试了一件事来消除这个问题。我从 Apple 技术支持处获得了一小段代码,并根据 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"]];
}

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

最佳答案

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

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

另请阅读此内容 - 数据存储指南

  • 无法重新创建的关键数据(例如,如果设备损坏就会丢失的文档或用户特定数据)将进入 /Documents 目录,并由 iCloud 备份,除非另有说明.

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

  • 在应用程序启动之间暂时且未使用的临时数据(例如临时文件缓存)会进入 /tmp 目录,并且 iCloud 不会备份。您应该始终记住自己删除存储在此处的文件。

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

关于iphone - 由于 "do not back up"原因,苹果开发者拒绝了 iPhone 应用程序。现在我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547027/

相关文章:

iphone - iOS - 从 MFMailComposeViewController 中删除 UIImageView

iphone - 有没有办法像 stretchableImageWithLeftCapWidth 一样垂直拉伸(stretch)图像?

iphone - Matt Gallagher 的 UITableView(重访)+ NSFetchedResultsController

ios - UIView无限360度旋转动画?

ios - 如何使用 UIBezierPath 创建 UIImage

iphone - 使用 CoreText 对齐段落

ios - 如何在 Objective-C 中的 UITextField 中每次更改后调用操作?

ios - RubyMotion 中的只读属性

iOS Swift - 如何在返回信息窗口之前等待请求结束(谷歌地图)

ios - 如何在 swift 中实现 "delete"通知