經過幾個小時的搜索之後,我進入了看起來像死衚衕的狀態。在這種情況下,我所要做的就是使用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