2013-08-30 96 views
1

我正在設計一個將捆綁一些音頻文件的應用程序。他們將總計大約50MB。該應用程序將允許您通過應用內購買下載其他音頻文件。我的目標是將所有這些文件存儲在一個位置(文檔目錄)。是否允許從主包資源中刪除文件/文件夾?

我在做什麼在我的代碼是這樣的:

  1. 第一次啓動,從主束資源捆綁的歌曲複製到文檔目錄。
  2. 從主包資源中的原始位置刪除文件。

我所有的這個工作正常,所以我知道它的可能要做。我的問題是任何人都可以向我指出我不允許這樣做的蘋果文檔/指南?或者,根據蘋果的指導方針,這是完全可以接受的嗎?我知道他們不希望你寫入Resources文件夾,但一直未能找到關於刪除的明確答案。

+0

您不應將事物複製到.app中存在的Documents目錄中。這是一個很大的禁忌。這是浪費空間,你的應用程序實際上會被拒絕,因爲你將它們存儲在錯誤的地方(它們將被備份到iCloud,例如浪費更多空間)。只需編寫一個例程來查找首先檢查主包的文件,然後再回到存儲下載文件的位置(例如Caches目錄)。由於沙箱限制,從應用程序包中刪除文件也是不可能的。 –

回答

2

你要找的文件是在App Distribution Guide [重點煤礦]:」

代碼簽名您的應用程序允許操作系統,以確定誰簽署您的應用程序,以驗證您的應用程序一直沒有因爲如果應用程序包中的任何可執行代碼發生更改,則簽名將變爲無效請注意,圖像和筆尖文件等資源未簽名;因此,更改這些文件不會使簽名無效。

這就是說,正如我在@Wain的回答中所指出的那樣,如果文件是隻讀的,這可能不是一件好事。它在第一次啓動時增加了大量複製步驟,並且每次升級時都必須重新處理。

+0

謝謝。這就是我一直在尋找的。我同意這不是一個好主意,很可能會遵從你的建議,但至少我知道如果我選擇了它,不會因此被拒絕。 – tptcat

3

這是不可接受的,並且在設備上運行時無法工作(我猜你正在模擬器上測試)。您無法編輯捆綁包內容。該包已簽名並編輯它將使簽名無效。

建議在沒有音頻文件的情況下部署應用程序,然後在首次啓動後(如果這是您的選項)有一個(合適的)互聯網連接後立即開始下載它們。

+0

它在設備上正常工作。也就是說,我想我看不到文件是否被刪除,但我可以告訴他們正在被複制(顯然允許)。 – tptcat

+4

鑑於具體問題,該解決方案可能只是抽象查找文件,以便大多數應用程序不必關心它是在包中還是在Documents目錄中。請注意,Documents目錄通常用於用戶文檔,並且在iTunes中有特殊處理。通常,應用程序文件應該放在'〜/ Library/Application Support'中。 –

+0

感謝羅布。你是對的,那可能是最好的解決方案。而且,我的文件實際上部分存儲在Documents(我想要用於iTunes共享的一些文件)和Application Support(僅用於在設備上播放)中。我簡單地簡化了我的問題。 – tptcat

相關問題