Согласно Apple, documentation:NSNetService: Обрабатывать конфликты имен, когда публикуют службы
Если это имя службы конфликтует с существующей службой по сети, Bonjour выбирает новое имя. ... ваш сервис автоматически переименовывается, если он конфликтует с именем существующей службы в сети.
Как достичь этой функции?
Моя реализация:
self.publishService = [[NSNetService alloc] initWithDomain:@"local." type:@"_http._tcp." name:@"MyName" port:80];
self.publishService.delegate = self;
[self.publishService publish];
- (void)netServiceDidPublish:(NSNetService *)sender {
NSLog(@"did publish: %@", sender.name);
}
- (void)netService:(NSNetService *)sender didNotPublish:(NSDictionary *)errorDict {
NSLog(@"did not publish: %@", errorDict);
}
Когда эта услуга уже опубликован метод didNotPublish
делегат будет вызван. Я полагаю, что услуга не будет опубликована?
Я думал, что метод делегата netServiceDidPublish:
должен быть вызван снова для службы с новым именем, но это не так.
Спасибо! При создании экземпляра NSNetService я изменил порт на 0: 'self.publishService = [[NSNetService alloc] initWithDomain: @" local. " type: self.serviceIdentifier name: self.bonjourName port: 0]; '. Мне также нужно изменить метод публикации на '[self.publishService publishWithOptions: NSNetServiceListenForConnections];'. – Sebastian