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

问题描述:

我想在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

我刚开始这个工作今天与iOS 8应用程序扩展玩。通过将我的开发者团队ID预先加入到标识符中,我得到了它最初的工作(返回一个真实的目录而不是nil)。

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

+0

嗨LeffelMania,你是否能够在真正的iPad上进行测试? – dab

+0

我还没有在任何真实设备上测试过,没有。我试图利用的功能只有iOS 8,而且我还没有在我的任何设备上安装测试版。 – LeffelMania

+0

我可以在不同的开发人员帐户中使用相同的组名来在不同的开发人员应用程序之间共享文件吗? –

您可能还没有启用应用程序组为您的应用程序。您必须在Apple开发人员网站的会员中心中为您的App Group创建标识符。

enter image description here

enter image description here