OSX应用程序和命令行工具之间的NSConnection

5
我将尝试为OSX应用程序和命令行工具之间创建连接,以便使用分布式对象。如下是在命令行工具中注册连接的方法:
[NSConnection serviceConnectionWithName:@"server" rootObject:extManager];

应用程序尝试通过以下方式连接到已注册的连接对象:

self.serverConnection = [NSConnection connectionWithRegisteredName:@"server" host:nil];

如果该应用程序未被沙箱化,则会建立连接。如果应用程序被沙箱化,则 connectionWithRegisteredName 返回 nil。

我尝试向授权文件添加键和值,并使用团队证书对工具和应用程序进行签名,但这并没有起作用。

    <key>com.apple.security.application-groups</key>
    <array>
        <string><TEAM ID>.AppSuite</string>
    </array>

当应用处于沙盒环境下时,我该采取哪些措施使连接工作?

1个回答

0
这里的技巧是在连接名称中使用应用程序组名称作为前缀。例如:
self.serverConnection = [NSConnection connectionWithRegisteredName:@"<TEAM ID>.AppSuite.server" host:nil];

为什么?

Mach端口名称必须以应用程序组标识符开头,后跟一个句点(.),然后是您选择的名称。
例如,如果您的应用程序组名称为Z123456789.com.example.app-group,[...] 您可以创建名为Z123456789.com.example.app-group.Port_of_Kobe的Mach端口。
参考


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