22

我正在编写一个通过 WiFi 连接到专有设备的应用程序。专有设备充当 WiFi 接入点。

正如我所料,当设备断电时,WiFi 连接将终止。

iPhone 继续发送探测请求,寻找要连接的网络。它遵循用于发送探测的指数退避算法。

我的问题是最终 iPhone 发送的探测请求之间的间隔比我设备上的超时时间长,所以它们没有建立连接。

我正在使用可达性代码,它按我的预期工作。

似乎按下主页按钮将重置退避并立即发送探测请求。有谁知道让我的应用程序做类似事情的方法?

谢谢你的帮助。

4

5 回答 5

1

不是每次都使用 Reachability ping 互联网,而是 ping 本地网络上的主机,例如 DNS 服务器或路由器 (192.168.1.1)。

于 2014-08-11T00:04:04.803 回答
0

我怀疑如果您在应用程序中重新配置连接(重新设置 WiFi 配置),iPhone 将在没有退避的情况下重新开始扫描。因此,您的应用程序可以跟踪连接丢失后的时间,然后在适当的时间后重新配置链接。可能您必须重新配置为不同的 SSID,然后再切换回来,具体取决于 iOS 库的智能程度。

于 2013-09-05T11:28:59.357 回答
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"];    
}

希望有帮助。

于 2013-11-01T11:28:58.553 回答
0

恐怕没有办法在审核期间不被拒绝(您可以阅读如何访问SBWifiManager)。Apple 不启用任何方式从沙盒环境访问 wifi 管理器。我在将我的设备连接到各种接入点(使用探测请求进行定位)时遇到了类似的问题,到目前为止,在 iOS 7 中,探测请求是在很长的间隔(甚至 15 分钟)之间发送的。尝试修改您的接入点。

于 2014-07-21T13:59:42.123 回答
0

我以某种方式遇到了类似的情况,以检查设备是否连接在特定的 VPN 连接中。该方法是通过标准 ping或实现 ping Web 服务 ping 到本地网络中的机器。

如果您的本地网络中没有后端,那么最简单的方法就是 ping。您可以从 Apple 开发者网站查看以下代码示例:http: //developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html

于 2013-06-23T11:54:48.593 回答