2015-06-24 93 views
0

經過幾個小時的搜索之後,我進入了看起來像死衚衕的狀態。在這種情況下,我所要做的就是使用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相關的事件。很感謝任何形式的幫助!

回答

1

iTunes搜索bonjour的WiFi同步功能。至於didNotResolve或解決延遲,bonjour服務會在幾秒到30分鐘之間的任意位置隨機投射。

我實際上也試圖連接到iOS設備,但我無法獲得任何響應或任何設備返回。 :\

+0

有了iTunes WiFi Sync,我確實能夠做到這一點!我得到了設備名稱和IP地址。取而代之的是創建一個新的服務,將循環的服務對象的委託設置爲self,並使用超時值30解決。'[service setDelegate:self]; [service resolveWithTimeout:30];'我發現iOS 9和iOS 8有不同的端口。所以這就是爲什麼上面的代碼不起作用,這在我的iOS 8 iPad上很好,但在我的iOS 9測試版iPhone上卻沒有。 – isklikas