2014-07-24 169 views
1

我有一個現有的OSX應用程序,支持OSX 10.5以上。我想將其發佈到AppStore,因此我需要對應用程序進行沙盒。我猜沙盒應用程序應該支持10.7以上。沙盒現有的OSX應用程序

  • 應用程序使用的文件夾中的用戶名目錄下創建臨時文件等
  • 它還會將已經有空表到同一個臨時文件夾和應用程序使用upates記錄的SQL數據庫文件。
  • 此外,如果發生崩潰,它會從osx的crashlog文件夾中提取日誌並請求用戶將其提交給開發人員。

問題

用的SANbox應用程序,我在哪裏存儲臨時文件? 我應該在哪裏放置db文件,可以讀取/ witten +新的應用程序更新應該能夠找到exsting db文件。 碰撞記者的自定義代碼應該保留還是被重複使用?

感謝

回答

0

我在哪裏存儲臨時文件?

In the directory recommended by NSTemporaryDirectory().(這適用於沙箱和非沙盒應用程序。)

我應在哪裏可以讀取/維滕到

在你的應用程序的應用程序的數據庫文件支持目錄。 Use NSSearchPathForDirectoriesInDomains() to find it,然後附加您的應用程序的名稱。同樣,無論你是否使用沙箱,這都是一樣的。

新的應用更新應該能夠找到exsting db文件。

不可能。您可以要求用戶使用NSOpenPanel找到現有文件,但您無法自己打開它,因爲它位於沙箱外。

崩潰記者的自定義代碼應該保留還是被重複使用?

您需要將其刪除,因爲它不會在沙箱下運行 - 崩潰報告不會存儲到您的沙盒中。您將通過iTunes Connect收到您的應用程序的崩潰報告。

或者,您可能希望查看第三方崩潰報告服務,如PLCrashReporter

+0

只需要澄清。當新的應用程序更新發布時,如果它找不到現有的數據庫文件,這是否意味着它與刪除應用程序並重新安裝應用程序相同?從而所有配置設置或以前版本的任何緩存數據在更新時都會丟失?並且更新後的版本無法找到以前版本的任何數據? – Ahmed

+0

更新應用程序時,存儲在沙箱中的數據將保留在原位。 – duskwuff

+0

謝謝,所以基本上我可以複製我的數據庫文件在沙箱文件夾讓新版本訪問它。真的對嗎? – Ahmed

0

有對現有應用的數據遷移到沙箱機制:Migrating an App to a Sandbox上developer.apple.com

一旦新的沙盒應用程序啓動第一次這樣做。如果您可以確定數據庫的存儲位置,則可以將其遷移到沙箱中。