使用 NSNetService 获取远程 iOS 设备的主机名

Getting the HostName of a Remote iOS Device with NSNetService

经过几个多小时的搜索,我进入了一个看似死胡同的地方。在这种情况下,我要做的就是使用 Bonjour 获取网络中的所有 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 returns -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: 也没有调用,我相信它只是在等待解决的响应。

为了支持这一说法,一旦它确实进入了方法并且实际上是[服务主机名]; return Yanniss-iPhone,但那是在我离开 Mac App 运行ning 大约半小时的完全随机时间发生的。什么可以将此调用到 运行?或者有人知道获取远程设备主机名的不同方法吗?其他答案没有回答我的问题,因为我正在寻找远程设备的主机名,而不是 Mac 设备的主机名。

相对于此,我发现当您关闭并重新启动 iTunes 以及 iTunes Helper 时,我在下面提到的日志会再次发送。这就是为什么我认为正确的日志是与 iTunes 相关的事件。非常感谢任何帮助!

iTunes 在 bonjour 中搜索 wifi 同步功能。至于 didNotResolve 或 resolve 延迟,bonjour 服务会在几秒到 30 分钟之间随机投射自己。

我实际上也在尝试连接到 iOS 设备,但我无法收到任何响应或返回任何设备。 :\