经过几个小时的搜索之后,我进入了看起来像死胡同的状态。在这种情况下,我所要做的就是使用Bonjour获取网络的所有iOS设备。我这样做了这样的使用NSNetService获取远程iOS设备的主机名
self.serviceBrowser = [[NSNetServiceBrowser alloc] init];
[self.serviceBrowser setDelegate:self];
[self.serviceBrowser searchForServicesOfType:@"_apple-mobdev2._tcp." inDomain:@"local."];
这工作得很好,但我得到的是以下几点:
local. _apple-mobdev2._tcp. [MAC ADDRESS HERE]
我试图解决通过使用同步端口(62078)的连接,因为service.port返回-1。
for (NSNetService *service in self.services) {
NSLog(@"%@", service);
NSNetService *newService = [[NSNetService alloc] initWithDomain:service.domain type:service.type name:service.name port:62078];
[newService setDelegate:self];
[newService resolveWithTimeout:30];
}
这在它自己又调用netServiceWillResolve:有一点问题都没有,但是,它并没有使其向netServiceDidResolveAddress:
但无论这是否失败。 netService:didNotResolve:也不会被调用,我相信它只是等待响应被解决。
为了支持这个声明,一旦它确实使它成为方法并且实际上[service hostName];的确返回了Yanniss-iPhone,但这发生在一个完全随机的时间,我离开Mac App运行了大约半个小时。有什么可以调用它来运行?还是有人知道有不同的方式来获得远程设备的hostName?其他答案不回答我的问题,因为我正在寻找远程设备的hostName,而不是Mac设备。
相对于此,我发现当您杀死并重新启动iTunes以及iTunes Helper时,我会在下面提到的日志再次发送。这就是为什么我相信正确的日志是与iTunes相关的事件。很感谢任何形式的帮助!
有了iTunes WiFi Sync,我确实能够做到这一点!我得到了设备名称和IP地址。取而代之的是创建一个新的服务,将循环的服务对象的委托设置为self,并使用超时值30解决。'[service setDelegate:self]; [service resolveWithTimeout:30];'我发现iOS 9和iOS 8有不同的端口。所以这就是为什么上面的代码不起作用,这在我的iOS 8 iPad上很好,但在我的iOS 9测试版iPhone上却没有。 – isklikas