应用程序组容器应该有团队标识符吗?

3
我正在构建一个带有嵌入式共享扩展的Mac应用程序,并尝试配置应用组以在它们之间共享数据。在Xcode中,在"Capabilities"下,我打开了App Groups并设置了一个单一值:$(TeamIdentifierPrefix)com.company.App,分别在父应用程序和共享扩展中设置。当我运行父应用程序时,它会创建一个文件夹:Library/Group Containers/com.company.App(没有团队ID)。当我运行扩展时,它会创建一个文件夹:Library/Group Containers/TEAMID.com.company.App带有团队ID。

为什么两个可执行文件会创建不同的容器,如何为两者定义相同的容器?

1
我遇到了同样的问题。由于某种原因,$(TeamIdentifierPrefix)有时会评估为空字符串。我的解决方法:使用实际的团队标识符而不是变量。 - nschum
@nschum 我也是 - 尝试了各种方法和变化,但仅在将变量替换为包含团队标识符的静态字符串后才对我有效。感谢指出这一点! - Jay
尽管$(TeamIdentifierPrefix)在我的macOS 10.11上表现良好,但在10.12上却出现了警告,只能通过使用字面上的“group”前缀来消除:group.$(TeamIdentifierPrefix).com.company.App。请参见此处:https://dev59.com/nloT5IYBdhLWcg3wrRKE - ctietze
1个回答

0

在Xcode的功能中,不应包括“App”扩展。

用于管理组容器的方法是特定的。

要访问组容器,应在两个应用程序中使用以下方法[myFileManager containerURLForSecurityApplicationGroupIdentifier:TEAMID.com.company],不包括APP扩展。

要访问UserDefaults(由两个应用程序共享)并将它们存储在组容器中,应调用[NSUserDefaults alloc] initWithSuiteName: TEAMID.com.company]。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接