NSNetService无法解决

时间:2014-09-23 12:50:46

标签: ios ios8 bonjour

我有一个现有的应用程序(实际上是一对iOS应用程序),它有一个非常基本的Bonjour实现,所以'客户端'可以找到服务器'在网络上。这个工作正常,直到最近的测试(我并不完全确定这与iOS8有关,但这是我第一次用iOS 8编译这些应用程序)。在这种情况下,所有工作都按预期工作,直到客户端去解析服务器的地址。此时,它总是超时。此外,我已经从应用程序商店尝试了一些Bonjour发现应用程序,并且它们也超时(所以我假设这是服务器代码的问题)。

在客户端应用程序中,我的NSNetServiceDelegate方法按以下顺序调用:

netServiceWillResolve:
(then it waits the full timeout period that I specified in resolveWithTimeout:)
netService:didNotResolve:

这段代码过去一直运作良好。我不完全确定会导致这种行为的原因。

以下是发布服务的代码:

- (void)initializeServerServiceStatus
{
    NSString *deviceName = [[UIDevice currentDevice] name];
    NSString *serviceName = [NSString stringWithFormat:@"iPad Server - %@", deviceName];

    self.serverPresentationService = [[NSNetService alloc] initWithDomain:@"local."
                                                                     type:SERVICE_NAME_IPAD_SERVER
                                                                     name:serviceName
                                                                     port:self.port];

    self.serverPresentationService.delegate = self;
    [self.serverPresentationService publish];
    self.isPublishing = YES;
}

我已经验证调用了netServiceDidPublish:方法,并且没有调用netServiceDidStop:。

更新:我已经确认如果该服务是在iOS 7设备上发布的,则所有服务都按预期工作(即使解析设备在iOS 8上)。

更新2 :我已经确认Apple在iOS 8版本中了解了Bonjour的一些问题:https://devforums.apple.com/message/1045870#1045870

0 个答案:

没有答案