[英]How can I implement the miniplayer in Apple Music in my own app?
[英]Apple Bonjour: how can I tell which published service is my own?
我有兩台iOS設備使用Bonjour API成功找到對方,但由於它們同時發布和瀏覽,它們也會看到自己出現在可用服務列表中。 必須有一些信息,每個端點可以用來確定一個服務是他們自己的,並將其從列表中排除...我敢肯定我只是錯過了某個地方 - 任何想法?
我使用了文檔中的示例並進行了一些小的更改。
mDNS沒有對設備邊界進行任何區分 - 鏈路本地網絡上的每個mDNS解析器都會偵聽默認情況下發送到224.0.0.251
的所有多播數據包,無論其來源如何。 把它想象成一個美化的短波電台。 好吧,有點兒。
這意味着當您瀏覽服務時,NSNetServiceBrowser不區分主機(有時我發現它是服務器端應用程序中的一個有用功能)。
我建議忽略你自己的服務的最簡單的方法是檢查NSNetService
返回的NSNetService
對象的hostname
netServiceBrowser:didFindService:moreComing:
回調不是你的,在你做任何你需要做的事情之前。
我正在使用IOS 8.1,我有同樣的問題。 我最后將didFindService返回的每個服務的名稱與代表我的bonjour服務器的本地NSNetService的名稱進行比較。
根據我看到的調試我的應用程序,每個NSNetService的主機名都是nil,直到服務解析。 在我的情況下,我沒有在didFindService中調用resolveWithTimeout,因為我想顯示數據需要很長時間。
如接受的答案所示,將NSNetService
名稱與設備名稱進行比較:
- (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing
{
// Ignore the local device if specified
if ([aNetService.name isEqualToString:UIDevice.currentDevice.name])
{
NSLog(@"NETSERVICE: Ignoring NetService for self: '%@'", aNetService.name);
}
else
{
...
}
// If that's it then stop the browser (it's manually controlled)
if (!moreComing) {
[_netBrowser stop];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.