2012-08-02 147 views
3

例如,如果我有一個XML文件(從其他應用程序導出的,所以我沒有對內容沒有控制),在不同的文件夾中引用圖片時,我訪問由另一個文件引用的文件到XML文件,我不能讀取圖像,直到用戶使用我的應用程序瀏覽它們。如何沙盒(應用程序商店)

我可以讓他們瀏覽到上一級文件夾(甚至瀏覽到「/」)繞過它,但它似乎有點廢話要告訴用戶「我不能訪問/路徑/到/文件,你可以請現在瀏覽它,所以我可以打開它嗎?「

是否有這個沒有更好的辦法?是不是有某種方式來顯示提示,如「AppX正試圖從/ Users/UserX/FolderX讀取,你會授予權限嗎?」

+0

我不知道有什麼可以做,除了提示用戶打開你想要的文件,並將它們複製到您的沙盒文件夾? – trojanfoe 2012-08-02 15:11:28

回答

3

見我的問題和答案在這裏:App Sandbox: document-scoped bookmark not resolving; not returning any error

我收集嵌入範圍的書籤到我的XML文件。

更新

既然你有超過輸入的XML格式無法控制的規範,讓你的應用程序能夠訪問在XML中指定的文件的唯一方法是通過讓用戶選擇文件或其中一個文件的父目錄在NSOpenPanel中。如果XML包含多個文件引用,您可以讓用戶授予對包含所有文件的目錄的訪問權限。

沒有辦法到處問權限,因爲這會破壞沙箱的目的。如果您的應用可以繞過用戶的直接許可,那麼惡意軟件也可以。但是,一旦獲得訪問權限,您就可以爲每個文件創建一個安全範圍的書籤,因此您不需要多次向用戶請求權限。

更新2

回答您的評論的問題,你可以用下面讓用戶在對話框簡單:

[openPanel setMessage:@"Click 'OK' to allow access to files contained in the selected directory"]; 
[openPanel setDirectoryURL:[NSURL fileURLWithPath:pathFromTheXMLFile]]; 

下面是它的documentation on NSSavePanelNSOpenPanel繼承和上面的屬性在那裏定義)。

+0

XML文件不是由我創建的,而是從另一個應用程序導出的,所以我無法控制進入它的內容。 – Grezzo 2012-08-10 08:59:25

+0

夠公平的,我只是希望找到比讓用戶瀏覽更爲權威的方式。似乎沒有其他辦法。我們實施的解決方案是告訴用戶哪個文件夾包含我們需要訪問的文件,然後讓他們瀏覽到該文件夾​​。這些文件通常在〜/ Documents文件夾的子文件夾中,所以我告訴他們一個更高的文件夾是可以的。我存儲書籤,所以他們希望不必經常瀏覽它們。 – Grezzo 2012-08-17 06:32:39

+0

您也可以將瀏覽器初始化爲您建議的文件夾,並在瀏覽器中給出說明文字。他們所要做的只是點擊「確定」(或者你甚至可以將該按鈕的標題改爲「允許」)。 – Dov 2012-08-17 10:27:15

2

這是一個黑客(有點像你提到的) - 如果你可以檢測該文件已嵌入的文件路徑 - 你已經打開了文件之後 - 你可以提示用戶「導入文件」,然後選擇父目錄並將父目錄複製到沙箱以讀取文件?

我知道很爛但看了對沙箱蘋果沒有西元嵌入式書籤到文件林不知道你真的能做些什麼。