I'm working on advertising a desktop client to phones on the local network. My phone is at 6.0.2 with the Xcode 4.5.2.
I know the desktop app is registering successfully because the Discovery app (by Tildesoft) on my phone shows my service on the network (which also rules out wifi problems).
I've downloaded the Apple app example, Bonjour Web. The delegate for finding "_myservice._tcp" didn't ever fire, but the start browsing method does fire.
I tried using HHServices (which wraps DNSService), and while the start browsing method fired, the service found method doesn't fire.
In my own app, I tried using NSNetServiceBrowser. I set the delegate, and my "netServiceBrowserWillSearch" delegate method gets fired, but nothing else happens.
Code is attached if you want to verify.
Header:
#import <UIKit/UIKit.h>
@interface ClientFinder_ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate,NSNetServiceBrowserDelegate>
@property (weak, nonatomic) IBOutlet UITableView *availableClientsTableView;
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindDomain:(NSString *)domainString moreComing:(BOOL)moreComing;
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing;
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict;
-(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser;
-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser;
@end
Relevant Implementation:
- (void)viewDidLoad
{
[super viewDidLoad];
dictionaryFoundClients = [[NSMutableDictionary alloc] initWithCapacity:1];
[self addLogoToNabar];
[self listen];
}
-(void)listen{
NSNetServiceBrowser *serviceBrowser = [NSNetServiceBrowser new];
[serviceBrowser setDelegate:self];
[self.netServiceBrowser searchForServicesOfType:TYPE inDomain:domain];
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindDomain:(NSString *)domainString moreComing:(BOOL)moreComing{
NSLog(@"aNetServiceBrowser didFindDomain");
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{
NSLog(@"aNetServiceBrowser didFindService");
[dictionaryFoundClients setObject:aNetService forKey:aNetService.hostName];
NSLog(@"Found service: %@ @ %@", aNetService.name, aNetService.hostName);
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict{
NSLog(@"aNetServiceBrowser didNotSearch. Errors enumerated");
for(int a=0; a< errorDict.count; a++){
NSString *key = [[errorDict allKeys] objectAtIndex:a];
NSString *val = [errorDict objectForKey:key];
NSLog(@"%@: %@", key, val);
}
}
-(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser{
NSLog(@"netServiceBrowserDidStopSearch");
}
-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser{
NSLog(@"netServiceBrowserWillSearch");
}