Finder Sync 扩展:无法通过 UNIX 域套接字进行通信
Posted
技术标签:
【中文标题】Finder Sync 扩展:无法通过 UNIX 域套接字进行通信【英文标题】:Finder Sync extension: cannot communicate through UNIX domain socket 【发布时间】:2015-09-17 13:56:32 【问题描述】:我有以下问题:我正在实现 Finder Sync 插件,它需要与主应用程序通信。以前,当我使用旧的好的 mach_inject 时,它通过 UNIX 域套接字工作得很好。
但是,现在,即使允许 com.apple.security.temporary-exception.files.home-relative-path.read-write 和 com.apple.security.network.client,我也无法连接到套接字,总是收到9/17/15 11:15:34.000 kernel[0]: Sandbox: finderplugin(660) deny network-outbound /Users/nickolay/Library/blablabla/.cmdsckt
有人知道如何解决这个问题吗?也许,需要其他权利或其他套接字路径?
【问题讨论】:
【参考方案1】:您需要在扩展的权利中添加以下内容。
<key>com.apple.security.temporary-exception.sbpl</key>
<array>
<string>(allow network-outbound)</string>
<string>(allow network-bind)</string>
</array>
【讨论】:
谢谢。你能具体说明你从哪里得到这些信息吗?它似乎不存在于 Apple 网站上的 App Sandbox 文档中(或者我看错了?)。 即使我尝试了很多方法来建立通信,最后我还是从 Ashutosh Mehra 的推文中找到了关于 APP 沙盒的推文,这在 Apple 的网站上没有记录。 His Tweet 谢谢,这是非常有价值和有趣的帖子。但是,Apple 可以随时删除该 .sbpl 扩展名(但它仍然存在于 El Capitan 中)。【参考方案2】:好的,NSXPCConnection 似乎不起作用,所以我最终使用了马赫端口。 IE。 NSMachPort、NSMachBootstrapServer 等等。
【讨论】:
以上是关于Finder Sync 扩展:无法通过 UNIX 域套接字进行通信的主要内容,如果未能解决你的问题,请参考以下文章