有没有办法在通信过程中跟踪设备的Wi-Fi连接

时间:2012-11-22 05:21:11

标签: iphone ios connection wifi handle

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

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

对于以下情况,我可以处理NSStream ErrorshandleEvent代表

 NSStreamEventErrorOccurred 
 NSStreamEventEndEncountered

但是我无法通过此delegate找到Wi-Fi连接丢失。所以在我看来可能的解决方案是使用Reachability类来检查后台线程中的wi-fi连接。然而,这是一种不好的做法,它消耗更多的电池电量。

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

1 个答案:

答案 0 :(得分: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的代表,您可以参考该库。 这只是解决问题的一种方法,希望它有所帮助。