rog*_*oom 5 macos sandbox app-store entitlements nsconnection
我正在尝试在 OSX 应用程序和命令行工具之间创建连接以处理分布式对象。
连接在命令行工具中注册是这样的
[NSConnection serviceConnectionWithName:@"server" rootObject:extManager];
Run Code Online (Sandbox Code Playgroud)
并尝试从应用程序连接到注册的连接对象,如下所示
self.serverConnection = [NSConnection connectionWithRegisteredName:@"server" host:nil];
Run Code Online (Sandbox Code Playgroud)
当应用程序没有被沙盒化时,连接就建立了。当应用程序被沙盒化时,connectionWithRegisteredName返回 nil。
我已尝试向权利添加密钥和值,并使用团队证书对工具和应用程序进行签名,但它不起作用
<key>com.apple.security.application-groups</key>
<array>
<string><TEAM ID>.AppSuite</string>
</array>
Run Code Online (Sandbox Code Playgroud)
在沙盒化时,我该怎么做才能使连接正常工作?
这里的技巧是使用应用程序组名称作为连接名称的前缀。IE:
\n\nself.serverConnection = [NSConnection connectionWithRegisteredName:@"<TEAM ID>.AppSuite.server" host:nil];\nRun Code Online (Sandbox Code Playgroud)\n\n为什么?
\n\n\n\nMach 端口名称必须以应用程序组标识符开头,后跟句点 (.),最后是您选择的名称。
\n
\n 例如,如果您的应用程序组\xe2\x80\x99s 名称为 Z123456789.com.example.app-group,[...] 您可以创建一个名为 Z123456789.com.example.app-group.Port_of_Kobe 的 Mach 端口。
\n 参考
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |