2017-10-16 13 views
0

Je suis en train d'annoncer un service avec multipeer connectivité dans macOS 10.13 en tant que tel:MCNearbyServiceAdvertiser sur macOS 10,13 (High Sierra) ne fonctionne pas

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!); 

Au lieu d'obtenir le délégué approprié méthodes de rappel se appelé l'annonceur échoue immédiatement et c'est ce que je reçois dans la console:

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; 
}]. 

Une idée de comment résoudre ce problème?

MISE À JOUR:

Courir exactement le même code dans un simulateur iOS fonctionne très bien donc je devine qu'il a quelque chose à voir avec certaines autorisations sur la machine Mac. Voyant que le journal indique qu'il s'agit d'un problème d'autorisation, je suis allé de l'avant et activé l'utilisateur root sur le Mac et essayé d'exécuter le même code en vain. Je pense à désactiver la protection de l'intégrité du système, mais j'ai du mal à accepter le fait qu'Apple publierait ce framework si tous ces compromis de sécurité sont nécessaires pour l'utiliser. Continuera à enquêter.

Répondre

3

Après des jours de lutte, la solution est très simple. Assurez-vous que vous activez les droits d'accès réseau pour votre cible. Voir l'image ci-jointe:

enter image description here