2014-01-10 41 views
1

我想在iOS環境中的多個應用程序之間共享文件。NSFileManager中的containerURLForSecurityApplicationGroupIdentifier如何在iOS 7上工作

我已經在使用UIDocumentInteractionController機制來達到目的,但我面臨一個問題,因爲應用程序之間交換的數據量很大(2Go左右)。

我正在使用ZipArchive庫來收集所有共享文件,但它在某些情況下確實會失敗以創建巨大的zip文件。 我試圖發送一個目錄而不是文件,但內容不會被複制。

當我升級到iOS 7時,我試圖在NSFileManager中使新的可用containerURLForSecurityApplicationGroupIdentifier方法工作。 我已經遵循了幾個例子,但他們是爲MAC OS X.

這是一個蘋果的錯誤,也使這個API也適用於iOS 7,或者需要哪些指令,使其工作。

這裏是應用程序的權利文件的內容:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>com.apple.security.app-sandbox</key> 
    <true/> 
    <key>com.apple.security.application-groups</key> 
    <array> 
     <string>$(TeamIdentifierPrefix)com.example.AppFileSharing</string> 
    </array> 
    <key>keychain-access-groups</key> 
    <array> 
     <string>$(AppIdentifierPrefix)com.example.AppFileSharing</string> 
    </array> 
</dict> 
</plist> 

下面是示例代碼訪問容器:

NSFileManager* fileManager = [NSFileManager defaultManager]; 
NSURL* containerURL = [fileManager 
containerURLForSecurityApplicationGroupIdentifier:@"com.example.AppFileSharing"]; 
NSLog(@"%@", containerURL); 

當我運行的應用程序,該containerURL爲空。

讓這個功能起作用真是太棒了。

問候,

DAB

+0

喜你該解決方案? – Hitendra

+1

我在iPhone模擬器上取得了一點成功,但無法在真正的iPad上運行它。自從這篇文章以來,我無法進行進一步的測試。您需要注意的是您的目標的常規屬性中的團隊信息。這意味着這種行爲可能是致力於企業計劃的。 – dab

回答

0

我剛開始這個工作今天與iOS 8應用程序擴展玩。通過將我的開發者團隊ID預先加入到標識符中,我得到了它最初的工作(返回一個真實的目錄而不是nil)。

NSURL* containerURL = [fileManager containerURLForSecurityApplicationGroupIdentifier:@"YOUR_TEAM_ID.com.example.AppFileSharing"];

+0

嗨LeffelMania,你是否能夠在真正的iPad上進行測試? – dab

+0

我還沒有在任何真實設備上測試過,沒有。我試圖利用的功能只有iOS 8,而且我還沒有在我的任何設備上安裝測試版。 – LeffelMania

+0

我可以在不同的開發人員帳戶中使用相同的組名來在不同的開發人員應用程序之間共享文件嗎? –

2

您可能還沒有啓用應用程序組爲您的應用程序。您必須在Apple開發人員網站的會員中心中爲您的App Group創建標識符。

enter image description here

enter image description here

相關問題