2

权利文档描述了一种方法,在该方法中,由单个开发团队生产的多个应用程序可以共享对特殊组容器的访问权限

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

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

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

这是我的主应用程序和帮助程序应用程序的权利文件。(将 TEAM_ID 替换为我的实际 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];
}

在主应用程序和辅助应用程序中执行该操作会在它们的每个沙箱内创建两个不同的目录。

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

4

1 回答 1

5

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

因此,一种方法是在“~”后面加上一些后退(“../”),直到你到达 ~/Library,然后你从它开始创建你的组容器。

于 2012-08-13T07:59:20.527 回答