Я пытаюсь установить соединение Bonjour между устройством iOS и Mac.Обнаружение друг друга работает отлично, но у меня проблемы с setTXTRecordData:
.Всегда происходит сбой (BOOL возвращает NO) ...
_serviceInstances создание:
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing
{
[aNetService retain];
[aNetService setDelegate:self];
[aNetService startMonitoring];
[aNetService performSelectorOnMainThread:@selector(resolve) withObject:nil waitUntilDone:YES];
[_serviceInstances addObject:aNetService];
}
Попытка отправки:
NSNetService*service = [_serviceInstances objectAtIndex:[servicesTable selectedRow]];
[service setDelegate:self];
NSDictionary*txtRecordDataDictionary = [NSDictionary dictionaryWithObject:@"2" forKey:@"Version"];
if (service)
{
BOOL success = [service setTXTRecordData:[NSNetService dataFromTXTRecordDictionary:txtRecordDataDictionary]];
if (!success)
{
NSRunCriticalAlertPanel(@"Sync Error", @"Failed to contact Client. Please restart Carbon on your iPad and try again.", @"OK", nil, nil);
}
NSLog(@"Service: %@",service);
}
NSLogвыводит Service: <NSNetService 0x441b40> local. _test._tcp. David's iPad
что правильно.
Код iOS:
NSNetService*service = [[NSNetService alloc] initWithDomain:@"local." type:@"_test._tcp." name:[[UIDevice currentDevice] name] port:28];
[service setDelegate:self];
[service setTXTRecordData:nil];
[service publish];
[service startMonitoring];
- (void)netService:(NSNetService *)sender didUpdateTXTRecordData:(NSData *)data
{
NSLog(@"Got Data! of %@",sender);
NSPropertyListFormat format;
NSDictionary*dict = [NSPropertyListSerialization propertyListFromData:data mutabilityOption:NSPropertyListImmutable format:&format errorDescription:nil];
UIAlertView *myAlert = [[UIAlertView alloc]
initWithTitle:[sender name] message:[dict objectForKey:@"Version"]
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[myAlert show];
[myAlert release];
}
По какой-то причине оповещение вызывается, когда я запускаю приложение для iPad (пустое содержимое, за исключением заголовка), но не реагирует на любые сигналы от моего Mac.
Я уверен, что что-то упустил?