macOS 10.13(High Sierra)上的MCNearbyServiceAdvertiser无法正常工作

时间:2017-10-16 18:29:45

标签: swift bonjour multipeer-connectivity macos-high-sierra

我正在尝试在macOS 10.13中宣传具有Multipeer Connectivity的服务:

    override init() {
    self.serviceAdvertiser = MCNearbyServiceAdvertiser(peer: peerID, discoveryInfo: nil, serviceType: serviceID);
    super.init();
    self.serviceAdvertiser.delegate = self;
    self.serviceAdvertiser.startAdvertisingPeer();
}

其中

    private let serviceID = "sample-test";
private let peerID = MCPeerID(displayName:  Host.current().localizedName!);

而不是让正确的委托回调方法被调用,广告客户立即失败,这就是我在控制台中得到的结果:

2017-10-16 11:22:35.568607-0700 macApp[3060:288948] [] tcp_listener_socket_create bind(fd 3) failed: [1] Operation not permitted
2017-10-16 11:22:35.569223-0700 macApp[3060:288940] [MCNearbyServiceAdvertiser] Server did not publish: errorDict [{
    NSNetServicesErrorCode = 1;
    NSNetServicesErrorDomain = 1;
}].

知道如何解决这个问题吗?

更新

在iOS模拟器中运行完全相同的代码可以正常工作,因此我猜测它与Mac机器上的某些权限有关。

看到日志显示这是一个权限问题,我继续在Mac上启用root用户并尝试运行相同的代码无效。

我正在考虑关闭系统完整性保护,但如果要使用所有这些安全性妥协,Apple将会发布此框架这一事实我很难接受。将继续调查。

1 个答案:

答案 0 :(得分:5)

经过几天的努力,解决方案非常简单。确保为目标启用网络权利。见附件快照:

enter image description here