我有一个Debian服务器。该服务器应检查我的家庭wifi是否可用iPhone。
问题是,如果移动数据可用,i-Devices会将wifi模块挂起以确保安全供电。因此,一种解决方案是,仅关闭移动数据,然后在wifi中发现就可以了。 (但这对我来说不是一个真正的解决方案,因为每次您在家时都要手动执行此操作很烦人,其他人也将使用此软件。)
到目前为止,已使用iPad Mini和iPhone5(ios7)进行了测试:
在iDevice上进行了相同的尝试,但似乎无法在后台拦截Objective-C中的Wifi状态更改。在前台,它可能通过Apple-Reachability-Class实现。
但是我在后台需要它,所以对我来说这是不可能的。
我试图通过端口5353 UDP(Bonjour / MDNS)上的netcat发出请求。结果是,iDevices确实在前30分钟内唤醒了wifi模块!在该时间段之后,如果请求唤醒了wifi模块,则有点幸运。我认为大约30分钟后可能会有“深度睡眠”。
->可行,但是设备发送多播的时间为1分钟到30分钟以上,因此不稳定。
->可以,但是APN Server不会告诉您是否已发送推送消息,因此它不是很可靠。我已经对此进行了测试,有时APN Server会“吞下”该消息。每隔5分钟就有一次互联网连接和移动数据流量来检查我的设备是否在wifi中……这并不是最佳做法。但是到目前为止,这是电池寿命的最佳解决方案。
所以我的问题是:
谢谢
最佳答案
问题是,如果移动数据可用,则i-Devices将WiFi模块挂起以确保安全供电
我没有阅读您的整个问题,因此很想知道您是否错过了什么,但是为了避免设备在30分钟后暂停Wi-Fi,请将此密钥添加到您的info.plist
UIRequiresPersistentWiFi
UIRequiresPersistentWiFi(布尔值-iOS)指定应用程序是否需要Wi-Fi连接。在应用运行时,iOS会保持 Activity 的Wi-Fi连接打开。
关于ios - 需要更多建议:如何检查iPhone是否在Wifi中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20420431/