2016-02-26 44 views
9

我的應用多次被應用商店拒絕,因爲未遵循「iOS數據存儲指南」。我已經標有「不備份」屬性中的所有文件目錄由蘋果審查小組的建議,如下所示:iOS數據存儲問題 - 即使在NSURLIsExcludedFromBackupKey後被拒絕

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *) filePathString 
{ 
    NSURL* URL= [NSURL URLWithString:filePathString]; 

    NSError *error = nil; 
    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] 
            forKey: NSURLIsExcludedFromBackupKey error: &error]; 

    return success; 
} 

我呼籲所有NSDocumentDirectory上述addSkipBackupAttributeToItemAtPath方法如下所示:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    [self addSkipBackupAttributeToItemAtPath:[paths objectAtIndex:0]]; 

和審查小組表示,它仍在存儲一些數據作爲iCloud的備份,並且正在被Apple審查小組拒絕,實際上我不想要任何備份。 有什麼我錯過了跳過備份屬性?或者我的代碼中有什麼錯誤?請幫忙。謝謝。

+1

我們只是得到了同樣的拒絕像你一樣,我們也對每個目錄全面檢查,以確保它們全都與NSURLIsExcludedFromBackupKey,手指交叉 – Bastet

+0

@芭絲特,有什麼解決辦法創造出來的? –

+0

我們的一些應用程序對此問題有所拒絕,儘管我們只發現了幾個KB。我們基於我們的觀察回覆截圖。一個被批准。其他人被拒絕,現在正在審查過程中重新提交此修改。 – Bastet

回答

3

將此代碼寫入addSkipBackupAttributeToPath方法。我遇到了同樣的問題,並通過編寫代碼來解決問題。

- (void)addSkipBackupAttributeToPath:(NSString*)path 
{ 
    u_int8_t b = 1; 
    setxattr([path fileSystemRepresentation], "com.apple.MobileBackup", &b, 1, 0, 0); 
} 
2

嘗試使用NSCachesDirectory代替NSDocumentDirectory,存儲的子文件夾/文件。

+0

是的,使用NSCachesDirectory。也可以在模擬器中運行,查看除了您希望保存的內容之外是否還保存了任何數據。您可能忘記刪除您之前在項目中使用過的一些代碼。 –

0

即使我用「不備份」我的屬性被存儲在可下載的內容\ Documents目錄,所以按照優先\文件內容將自動備份到iCloud。

Apple doc says

  1. 只有文件和其他數據是用戶生成的,或不能 否則將您的應用程序重新創建,應存放在 /Documents目錄和意志由iCloud自動備份。

    可以再次下載或再生
  2. 數據應該存儲在 的/圖書館/緩存目錄。 應放在Caches目錄中的文件示例包括數據庫緩存文件和 可下載內容,例如雜誌,報紙和 地圖應用程序使用的內容。

  3. 僅臨時使用的數據應存儲在 /tmp目錄中。雖然這些文件不支持 直到iCloud,但請記住在完成 之後刪除這些文件,以便它們不會繼續消耗用戶的 設備上的空間。

  4. 使用「不備份」屬性指定應該 留在設備,即使在低存儲文件的情況下。使用此屬性 以及可以重新創建的數據,但需要保留即使在低存儲情況下才能使應用正常運行,或者因爲 客戶希望在脫機使用期間可以使用該數據。該屬性 適用於標記文件,不管它們在哪個目錄中,包括Documents目錄在內的 。這些文件不會被清除,並且 不會包含在用戶的iCloud或iTunes備份中。由於 這些文件確實使用設備上的存儲空間,因此您的應用需要負責 以定期監視和清除這些文件。