2012-07-26 116 views
2

享有权文档描述了multiple apps produced by a single development team can share access to a special group container沙盒可可应用程序组

我已经添加了权利关键,主要应用与被包含在主应用程序包一个辅助应用程序的方法。组目录永远不会被创建,并且获取路径的方法 - [NSURL containerURLForSecurityApplicationGroupIdentifier:] - 实际上并不存在于任何头文件中。

我缺少什么创建共享组容器?

UPDATE:添加权利和组容器创建

这是我的权利文件的主要应用和帮助应用程序。 (我的实际ID替换TEAM_ID)

<?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>TEAM_ID.com.pinepointsoftware</string> 
    </array> 
</dict> 
</plist> 

我试图创建本集团集装箱目录自己基于从开发论坛的一些信息:

NSFileManager *fm = [NSFileManager defaultManager]; 
NSString *path = [@"~/Library/Group Containers/TEAM_ID.com.pinepointsoftware" stringByExpandingTildeInPath]; 

if ([fm createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:NULL]) { 
    [fm createFileAtPath:[path stringByAppendingPathComponent:@"test.txt"] contents:nil attributes:nil]; 
} 

执行主及和助手内应用程序在每个沙箱内创建两个不同的目录。

我找到了一个来自Apple的示例项目AppSandboxLoginItemXPCDemo,它使用XPC的应用程序组。我可以通过更改授权和捆绑标识符来匹配我的团队,但无法共享组容器。

+0

你可以发布你的权利声明看起来像什么xml plist? – Dov 2012-07-27 00:03:38

回答

5

“〜”将自动转换为沙盒环境中的容器目录。

所以一种方法是在“〜”后加上一些后退(“../”),直到达到〜/ Library,然后从中开始创建组容器。

+0

太好了,谢谢。使用这个工作创建一个目录:'NSString * groupContainer = [@“〜/../../../ Group Containers/TEAM_ID.com.pinepointsoftware”stringByExpandingTildeInPath];' – 2012-08-14 14:43:20

+0

尽管这有效,我担心这可能会一旦苹果修复它,它将在未来突破!奇怪的是,该功能是在10.7.4中引入的,现在是10.8.1,他们仍然没有解决这个严重的错误。 – strange 2012-09-01 19:27:22

+1

这不是一个错误。如果您无法访问路径,则无法使用。在实现方法containerURLForSecurityApplicationGroupIdentifier之前,获取组容器的路径是一种解决方法。 – Samir 2012-09-01 19:44:23

相关问题