沙盒可可应用程序组

时间:2012-07-26 00:20:45

标签: cocoa appstore-sandbox

权利文档描述了multiple apps produced by a single development team can share access to a special group container

的方法

我已将授权密钥添加到主应用程序和主应用程序包中包含的帮助应用程序。永远不会创建组目录,并且获取路径的方法 - [NSURL containerURLForSecurityApplicationGroupIdentifier:] - 实际上并不存在于任何标头中。

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

更新:添加了权利和组容器创建

这是我的主应用和帮助应用程序的权利文件。 (用我的实际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>

我试图根据开发论坛的一些信息自己创建Group Container目录:

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];
}

在main和helper应用程序中执行它会在每个沙箱中创建两个不同的目录。

我在Apple AppSandboxLoginItemXPCDemo 中找到了一个示例项目,该项目使用XPC的应用程序组。我可以通过更改权利和捆绑标识符来匹配我的团队,但不能让Group Containers共享。

1 个答案:

答案 0 :(得分:5)

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

所以一种方法是将“〜”附加一些后退(“../”)直到你到达〜/ Library然后从它开始创建你的组容器。