我想在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
答案 0 :(得分:2)
您可能尚未为您的应用启用应用群组。您必须在Apple开发者网站的会员中心为您的应用程序组创建标识符。
答案 1 :(得分:0)
我今天刚开始使用它来玩iOS 8 App Extensions。通过将我的开发人员团队ID添加到标识符,我得到了它最初的工作(返回一个真实的目录而不是nil
)。
NSURL* containerURL = [fileManager
containerURLForSecurityApplicationGroupIdentifier:@"YOUR_TEAM_ID.com.example.AppFileSharing"];