我正在编写一个通过WiFi连接到专有设备的应用程序。专有设备充当WiFi接入点。
当设备断电时,WiFi连接会终止,正如我所料。
iPhone继续发送探测请求,寻找要连接的网络。它遵循用于发送探测的指数退避算法。
我的问题是,iPhone发送的探测请求之间的间隔时间长于我设备上的超时,因此它们不会建立连接。
我正在使用Reachability代码,它可以正常运行。
似乎按下主页按钮将重置退避并立即发送探测请求。有没有人知道如何让我的应用程序做类似的事情?
感谢您的帮助。
答案 0 :(得分:1)
不是每次使用可达性ping互联网,而是ping本地网络上的主机,如DNS服务器或路由器(192.168.1.1)。
答案 1 :(得分:0)
我在某种程度上遇到了类似的情况,检查设备是否在特定的VPN连接中连接。方法是通过标准ping 或实施ping Web服务ping到本地网络中的计算机。
如果您的本地网络中没有后端,那么最简单的就是ping。您可以从Apple开发人员站点查看以下代码示例: http://developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html
答案 2 :(得分:0)
我怀疑如果您在应用中重新配置连接(重新设置WiFi配置),iPhone将重新开始扫描而不进行退避。因此,您的应用可以跟踪连接丢失后的时长,然后在适当的时间后重新配置链接。可能你需要重新配置到不同的SSID然后切换回来,这取决于iOS库的智能程度。
答案 3 :(得分:0)
我已经构建了一个应用程序,通过wifi连接到扫描仪,扫描仪充当接入点。为此我检查设备当前连接的SSID是否是扫描仪之一。要检查CurrentSSID,您可以使用以下代码:
+(NSString*)currentSSID {
CFArrayRef myArray = CNCopySupportedInterfaces();
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
if (!myDict) {
return nil;
}
NSDictionary *myDictionary = (__bridge_transfer NSDictionary*)myDict;
return [myDictionary objectForKey:@"SSID"];
}
希望有所帮助。
答案 4 :(得分:0)
我担心在审核期间没有被拒绝的情况下无法这样做(您可以阅读如何访问SBWifiManager
)。 Apple无法以任何方式从沙箱环境访问wifi管理器。我经历了将我的设备连接到各种接入点(用于定位探测请求)的类似问题,到目前为止,iOS 7探测请求是在很长的间隔(甚至15分钟)之间发送的。尝试修改您的接入点。