2012-03-03 36 views
2

由於「不備份」原因導致應用程序被拒絕原因由於「不備份」原因,蘋果開發者拒絕了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

回答

3

我找到了解決此問題的解決方案。我們不應該保留任何大的內存數據庫。 爲了消除這個問題,我刪除了所有放置在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中的私人文檔的更多信息。

0

您應該在創建文件夾的位置設置屬性。如果在didFinishLaunching期間嘗試設置屬性並且文件夾尚不存在(即,首次啓動時),那麼一旦它們被創建,它們將不會設置屬性。在您的應用下次啓動時它會正確設置,但您仍然會在第一次和第二次運行之間創建備份。

此外,我相信庫/庫文件夾會自動從備份中排除。

相關問題