NSFileManager中的containerURLForSecurityApplicationGroupIdentifier如何在iOS 7上运行

时间:2014-01-10 15:57:18

标签: ios ios7 file-sharing

我想在iOS环境中的多个应用程序之间共享文件。

我已经在使用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

2 个答案:

答案 0 :(得分:2)

您可能尚未为您的应用启用应用群组。您必须在Apple开发者网站的会员中心为您的应用程序组创建标识符。

enter image description here

enter image description here

答案 1 :(得分:0)

我今天刚开始使用它来玩iOS 8 App Extensions。通过将我的开发人员团队ID添加到标识符,我得到了它最初的工作(返回一个真实的目录而不是nil)。

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