Testning bandwidth to decide to load map or not

I’m developing an app that will be used in areas with weak 3G coverage. If the current bandwidth is less than x mbps I want to delay the loading of a map in a mapView object until the user reaches either a wifi hotspot or enters an area with stronger signal. Since there is no API for the iPhone’s Field Test Mode, the current bandwidth is not available for app developers. That is a pity, so instead I have to find a workaround. Grateful for suggestions!

OK, but you can use the simulator, and if you use the “Network Link Conditioner” you can simulate a lot of different network conditions including packet loss, poor coverage etc.

You’re going to need to sign in with your Apple Developer ID to get this, but you need to download “Additional Tools for Xcode 8.2”.

For future readers after Xcode 8 is no longer current, search for “Additional Tools” at Apple’s developer downloads site.

Thanks for the tip! Very helpful to know. The bog of knowledge re. xcode hides and reveals itself in mysterious ways.

Thanks. This is of course helpful during development, but as I said, I want to be able to decide during execution of the app. It is only then that the app will know the quality of the network at a particular place. I suppose it would be possible to set a timer when the user launches the app, to measure the time it takes for sending/receiving a data package. So my question should perhaps be rephrased - how would you go about setting up this kind of test?

Your timer idea is a good one but maybe an existing analytics product could give you that too…

I just don’t know a good way of actually doing this in the device. If you do know (or can discover) a Field Test Mode API you could make a test build but of course it would never make it to the store, almost certainly a private function would be detected by scripts.

I think I’ll have to leave the decision to the user. I’ll simply insert an alert when the user hits the button to load a map, asking him to look at the network indicator. If the network indicator says “no network” or “Edge” the recommendation is to wait, else to go ahead and load it.