Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS/OSX应用程序组ID,以“开始”;集团;或;团队id“;?_Ios_Macos_Cocoa_Cocoa Touch_Appstore Sandbox - Fatal编程技术网

iOS/OSX应用程序组ID,以“开始”;集团;或;团队id“;?

iOS/OSX应用程序组ID,以“开始”;集团;或;团队id“;?,ios,macos,cocoa,cocoa-touch,appstore-sandbox,Ios,Macos,Cocoa,Cocoa Touch,Appstore Sandbox,在Provisioning Portal中创建应用程序组id时(或无论它现在叫什么),它会说“输入应用程序组的唯一标识符,以字符串“Group”开头”,并且似乎会在输入字段中强制执行。此外,许多示例代码使用应用程序组id字符串,如“group.com.company.blah” 然而,我看到的最终章节贯穿了整个文档, 而且,与此直接矛盾的是,明确指出“必须从您的开发团队ID开始,然后是一个句号” 这些部分中给出的示例分别类似于“Z123456789.com.example.app group”和

在Provisioning Portal中创建应用程序组id时(或无论它现在叫什么),它会说“输入应用程序组的唯一标识符,以字符串“Group”开头”,并且似乎会在输入字段中强制执行。此外,许多示例代码使用应用程序组id字符串,如“group.com.company.blah”

然而,我看到的最终章节贯穿了整个文档, 而且,与此直接矛盾的是,明确指出“必须从您的开发团队ID开始,然后是一个句号”

这些部分中给出的示例分别类似于“Z123456789.com.example.app group”和“DG29478A379Q6483R9214.HolstFirstAppSuite”。(哇,最后一个是超级奇怪的球队id还是什么?)

那么,在这种不一致的情况下,我该怎么做才能让应用程序组ID正常工作呢?我是否应该输入配置门户“group.TEAM-ID.com.example.blah”?我应该在源代码字符串中使用相同的字符串,还是像许多代码示例一样省略“group.”部分?或者是文档错误,而且永远不需要团队id

上下文。。。我一直在尝试更新iOS cocoapod的测试应用程序,这样我就可以看到扩展应用程序通信在起作用。在将应用程序id和组id更新到我的控件中之后,当使用类似于项目原始id的组id(如“group.com.mycompany.thingie”)时,我看到
containerURLForSecurityApplicationGroupIdentifier:
除了返回nil之外什么都不做,并且已经修复了它

更新:(为了清晰起见添加了这个,看看SO如何告诉我这个Q得到了很多点击率)结果证明这个东西比我最初认为的更宽容,因为
nil
结果证明(大部分?)是我做的。查看答案及其注释线程。我还没有检查文档和示例是否更清晰。

在“证书、标识符和配置文件”中,当您转到“应用程序组”部分并首先生成应用程序组时,所需的只是强制的Group.com.companyname.appname


只要com.companyname.appname与您在“常规”下为目标设置的捆绑包标识符相匹配,您就应该能够转到“功能”选项卡,打开“应用程序组”,单击刷新符号,您刚才在配置门户中创建的组应该显示在那里,即“group.com.companyname.appname”您可以选择将其勾选,然后将有一个权限错误。单击“修复问题”将自动解决该问题

现在,如果您导航到您的授权文件,您会注意到“com.apple.security.applications groups”将有一个项目,并且它将被设置为完全相同的“group.com.companyname.appname”值


我已经在设备上进行了测试,目前还没有问题。这并不能解释文档中的不一致性,但我可以保证这是可行的

在提交我的应用程序的macOS Sierra版本时,我被iOS和macOS之间的不一致所困扰

group.better.fyi适用于iOS提交,但在macOS提交过程中会导致以下错误(否则运行良好,没有警告或错误):

错误ITMS-90286:“无效的代码签名权限。您的应用程序包的签名包含macOS不支持的代码签名权限。具体来说,值'[group.better.fyi]不支持'ind.ie.Better-Mac.pkg/Payload/Better.app/Contents/PlugIns/Blocker Mac.appex/Contents/MacOS/Blocker Mac'中的'com.apple.security.application groups'键。此值应为字符串或字符串数组,每个字符串以您的TEAMID开头,后跟一个点。'“

将其替换为更好的
$(TeamIdentifierPrefix)。仅供参考,AppGroups下的Capabilities选项卡中的
修复了该问题

当然,这确实会造成iOS和Mac应用程序之间的不一致;dr版本:
但如果你想知道这一切背后的所有细节,请参阅下文

网间网操作系统 在门户中,创建的所有应用程序组ID必须以
组开头。
;门户实际上会强制执行这一点,因此,如果没有前缀,甚至不可能在那里注册组

如果随后在门户中的应用程序ID上设置了应用程序组ID,并且为该应用程序ID创建了iOS配置文件,则该应用程序组将完全按照已注册的方式嵌入到配置文件中。看看这样一个配置文件,你会在那里找到应用程序组ID

如果iOS应用程序的codesign授权文件中有应用程序组ID,codesign将确保授权中的组ID也可以在配置文件中找到,否则它将拒绝对应用程序进行签名。因此,资源调配配置文件将列出这些应用程序组的使用情况

当您在“功能”部分的Xcode中为某个应用程序配置应用程序组ID时,Xcode会将该ID放入代码设计权限文件中。为iOS应用程序配置的应用程序组必须与在门户中注册的应用程序组ID完全匹配

马科斯 不过,对于macOS来说,情况完全不同

如果将应用程序组ID添加到门户中的应用程序ID,则这不会影响为该应用程序ID创建的macOS配置文件。请自己查看;在生成的配置文件中找不到应用程序组ID!因此,在macOS上,配置配置文件不会将任何应用程序组的使用情况列入白名单。您可以将任何应用程序组ID放入您的授权文件中,这将始终作为codesign不关心的签名。Codesign甚至不在乎你的应用程序组ID是否以你的团队ID作为前缀(或者至少过去不这样做,现在可能是这样)

与iOS不同的是,macOS上应用程序组ID的唯一性不是由门户强制的,而是由苹果要求你的应用程序组ID以你的团队ID开头这一事实强制的,因此跨团队的唯一性是有保证的,在你自己的团队内强制唯一性是你的职责