私の iPhone アプリでは、bonjour サービスを公開し、次のデリゲート メソッドを使用しています。
- (void)netServiceDidPublish:(NSNetService *)ns
{
NSLog(@"Bonjour Service Published: http://%@.%@", [ns name], [ns domain]);
}
「name」プロパティは正しいデバイス名「How's Testing」を返しています。ただし、Safari を使用して利用可能なサービスを検出する場合、名前は「hows-testing」です。サービスはhttp://hows-testing.local.:somePortNumberです。
公開された名前が NSNetService によって報告されている名前と異なるのはなぜですか? 公開されたサービスの実際の名前を表示するにはどうすればよいですか? なんらかの理由で、公開された名前をオブジェクトから取得する方法がないと仮定すると、どうすればそれを自分で決定できますか? デバイス名によるのはわかりますが、置換ルールはどうなっていますか?アポストロフィを削除し、スペースをダッシュに置き換えます...他に何かありますか? 特殊文字はどうですか?