I\'m trying to set the UIRequiredDeviceCapabilities properties in my Info.plist file. My app requires a persistent network connection. If I look at the definition for the \"
Without this key, the iPhone will disable wifi after a certain amount of inactivity. With this key, the wifi is kept permanently enabled for your app.
First of all, UIRequiresPersistentWiFi
does not pertain just to WiFi, but is simply a way to state that your program is a network application and will be using any connection persistently. This in particular was mentioned by Apple developer doing WWDC presentation on network programming (last year, I think).
Second, the wifi
key of required device capabilities does seem to pertain to the WiFi in particular. The Unicom iPhone available in China has WiFi turned off (but is capable of connecting to network using cellular connection), and I've heard of reports that wifi
key is (or at least was) causing trouble with installations.
If you believe Apple's own (often vague) documentation, specifying properties in UIRequiredDeviceCapabilities causes filtering at Apple's point of delivery (app store). So if you specified 'wifi', in theory non-wifi devices wouldn't be able to install your app. However, all the iDevices so far support wifi.
Btw, UIRequiresPersistentWiFi does pertain to wifi directly in some ways. If you set this property to true, from my own tests I've seen that:
Or, to put it another way: without this flag set, communication over wifi in your app can just appear to stop working. Or sometimes you can launch your app on your ipod or ipad and find that network comms is failing, even though wifi is enabled and you are near a good hotspot.
It's sad that Apple's documentation is so muddled and confusing.
If you need persistent wifi you should use the key UIRequiresPersistentWiFi
.
The UIRequiredDeviceCapabilities
key does just what the name indicates, specifies which capabilities your app needs the device to have. Be it wifi, gps, magnetometer, etc.