1

目前我正在开发一个应用程序,它可以使用与developer.apple Wi-Tap应用程序相同的bonjour服务通过 Wi-Fi 将多个文件发送到其他设备。只有一个区别是,我正在发送Wi-Tap发送字符串的文件。

现在我想在我的应用程序中处理 Wi-Fi 连接问题,例如连接丢失。

我可以处理以下情况的NSStream Errors直通 委托handleEvent

 NSStreamEventErrorOccurred 
 NSStreamEventEndEncountered

但是我无法通过这个找到 Wi-Fi 连接丢失delegate。因此,我认为可能的解决方案是使用Reachability类来检查后台线程中的 wi-fi 连接。但是,这是一种不好的做法,并且会消耗更多的设备电池电量。

那么有没有其他方法可以在文件传输过程中跟踪设备的 Wi-Fi 连接?

4

1 回答 1

0

一种解决方法是使用NSNetService

由于这只是一个服务发布工具,它不会干扰您的数据传输,因此您只需使用

-(void)publishNetwork
{
//---publish the service---
netService = [[NSNetService alloc] 
              initWithDomain:@"" 
              type:BonjourServiceName 
              name:@"" 
              port:portNo];
netService.delegate = self;
[netService publish]; 

}

你必须运行它

[netService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

如果 Wifi 开启,那么这将被解雇

- (void)netServiceDidPublish:(NSNetService *)sender
 {
    NSLog(@"Service did publish:%@",sender);

 }

如果没有wifi

-(void)netService:(NSNetService *)aNetService didNotPublish:(NSDictionary *)dict 
 {
   NSLog(@"Service did not publish: %@", dict);
}

这些是 NSNetService 的代表,您可以参考该库。这只是解决您问题的一种方法,希望对您有所帮助。

于 2012-11-22T06:11:54.580 回答