目前我正在开发一个应用程序,它可以使用bonjour服务通过Wi-Fi向其他设备发送多个文件,与 developer.apple Wi-Tap 应用程序相同。只有一个区别是,我发送文件 Wi-Tap 发送字符串。
现在我想处理Wi-Fi连接问题,例如我的应用程序中的连接丢失。
对于以下情况,我可以处理NSStream
Errors
到handleEvent
代表
NSStreamEventErrorOccurred
NSStreamEventEndEncountered
但是我无法通过此delegate
找到Wi-Fi连接丢失。所以在我看来可能的解决方案是使用Reachability类来检查后台线程中的wi-fi连接。然而,这是一种不好的做法,它消耗更多的电池电量。
在文件传输过程中还有其他方法可以跟踪设备的Wi-Fi连接吗?
答案 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的代表,您可以参考该库。 这只是解决问题的一种方法,希望它有所帮助。