NSFileManager中的containerURLForSecurityApplicationGroupIdentifier如何在iOS 7上工作

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

我已经使用UIDocumentInteractionController机制来达到目的,但由于应用程序之间交换的数据量很大(2Go左右),所以我正面临一个问题。

我正在使用ZipArchive库来收集所有的共享文件,但是在某些情况下它确实会失败以创build巨大的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为空。

有这个function工作真是太好了。

问候,

轻拍

您可能尚未为您的应用启用应用组。 您必须在Apple开发人员网站的会员中心中为您的App Group创build标识符。

在这里输入图像说明

在这里输入图像说明

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

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