局域网内服务已经发布,在终端使用命令: dns-sd 可以检测到。
写了一个很简单的应用来发现服务,安装在测试手机(ios9.3)可以立即发现服务;但是安装在另一个测试机(ios8.4)上却没有立即找到设备(只调用netServiceBrowserWillSearch后没有其他反应)。有时过了很长时间才会发现服务,有时却会立即出现,概率性出现。
安装了Bonjour Browser应用来debug,ios9设备上回立即出现,但是同一时间8.4设备上却一直在scanning,有时过了1min才会出现结果,有时等了2min都没有出现结果。
代码很简单如下:
- (void) start
{
NSLog(@"start to search service");
if ( _bonjourServiceBrowser != nil ) {
[self stop];
}
_bonjourServiceBrowser = [[NSNetServiceBrowser alloc] init];
[_bonjourServiceBrowser scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
_bonjourServiceBrowser.delegate = self;
[_bonjourServiceBrowser searchForServicesOfType:@"_pp._tcp." inDomain:@"local."];
}
- (void) netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser
didFindService:(NSNetService *)netService
moreComing:(BOOL)moreServicesComing {
NSLog(@"did found service and service name is : %@ and more %d", netService.name,moreServicesComing);
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)browser didNotSearch:(NSDictionary<NSString *,NSNumber *> *)errorDict {
NSLog(@"not search ");
}
-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)browser {
NSLog(@"will search");
}
有哪位大牛能帮忙分析一下?谢谢
苹果的Bonjour协议接口内部实现有更新吗?(从ios8 到ios9),或者是我写的代码哪里有问题,或者手机属性需要设置?
应该是iOS自身的问题,对Bonjour的支持是逐步更新的。9比8支持的更好