有点难过。我正在开发一个Xcode扩展,需要通过NSUserDefaults与其容器应用程序进行通信。要执行此操作,您需要在扩展程序和容器应用程序中设置应用程序组权利,签署您的应用程序,然后初始化默认值,如此...
let defaults = UserDefaults(suiteName: "group.com.MyCo.TestCode")!
问题是即使没有抛出任何错误,扩展程序和应用程序也会获得两个不同的默认副本。
但是,如果我返回并在添加组时,保留TeamIdentifierPrefix,我最终会得到一个组名...
"03V7NBU5AX.group.com.MyCo.TestCode"
我在初始化中使用的是这样......
let defaults = UserDefaults(suiteName: "03V7NBU5AX.group.com.MyCo.TestCode")!
......现在一切正常!但为什么第一个案例不起作用呢?我已经看到的每个教程都说,只要应用程序组匹配它就应该可以工作,而不是我曾经看过的单个教程提到了团队标识符前缀。这是Xcode扩展特有的吗?
答案 0 :(得分:1)
我遇到了同样的问题。我使用的是iOS风格的应用组:group.com.MyCompany.MyTarget
在大多数情况下,这似乎是可行的。但是随后某些应用程序组功能突然停止工作,或者可能一直没有工作。
一项小小的研究发现了Mac专用的App Group的命名要求,我以前不知道这些要求:Should macOS App Group name start with `group.` or Development Team ID?
[App Group ID]必须由您的开发团队ID 组成,后跟一个句点,然后是您的开发团队选择的任意名称。例如:
DG29478A379Q6483R9214.HolstFirstAppSuite
Apple来源:
我在Xcode中将应用组名称切换为:$(TeamIdentifierPrefix)MyAppGroup
。
请注意,缺少"."
,它显然包含在$ Prefix中。如果您添加自己的"."
,则应用组将以".."