2

これはiOSのバグかもしれないと思います。

次の簡単なコードを実行して、ネット サービスをブロードキャストします。

self.netService = [[NSNetService alloc] initWithDomain:@"local."
                                                          type:@"_testnetwork._tcp."
                                                          name:[[UIDevice currentDevice] name]
                                                          port:port];
self.netService.delegate = self;
[self.netService publish];

別のデバイスで、次のコードを実行して、ネット サービスを検出します。

self.netServiceBrowser = [[NSNetServiceBrowser alloc] init];
self.netServiceBrowser.delegate = (id)self;
[self.netServiceBrowser searchForServicesOfType:@"_testnetwork._tcp." inDomain:@"local."];

何が起こるかというと、ブラウザはネット サービスが初めて現れたときを検出し、その後サービスがなくなると、ほとんどの場合それを検出せず、NSNetService がまだブロードキャスト中であると見なします。興味深いことに、アプリは両方のデバイスで停止でき、ブラウザを起動しても、現在ブロードキャストされている古いサービスを引き続き検出できます。

Mac のターミナルでこのコードを使用すると、サービスの表示と非表示が正しく表示されます。

dns-sd -B _test._tcp

この問題の解決策はありますか? これはiOSのバグですか?

4

0 に答える 0