数時間以上の捜索の後、行き止まりのように見える場所にたどり着きました。この場合、私がやろうとしているのは、ネットワークのすべての iOS デバイスを Bonjour で取得することだけです。私はこのようにしました
self.serviceBrowser = [[NSNetServiceBrowser alloc] init];
[self.serviceBrowser setDelegate:self];
[self.serviceBrowser searchForServicesOfType:@"_apple-mobdev2._tcp." inDomain:@"local."];
これはうまくいきますが、私が得たものは次のとおりです。
local. _apple-mobdev2._tcp. [MAC ADDRESS HERE]
service.port が -1 を返すため、同期ポート (62078) を使用して接続を解決しようとしました。
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 アプリを約 30 分間実行したままにしていた完全にランダムな時間でした。これを実行するために何が呼び出されたのでしょうか? または、リモートデバイスのホスト名を取得する別の方法を知っている人はいますか? Macデバイスではなく、リモートデバイスのホスト名を探しているため、他の回答は私の質問には答えません。
それに関連して、iTunes を強制終了して再起動すると、iTunes Helper と一緒に、以下で言及したまさにそのログが再度送信されることがわかりました。これが、正しいログが iTunes 関連のイベントであると私が信じている理由です。どんな助けでも大歓迎です!