Often in a shop you want to immediately add details to the transaction that you’ve just completed. As a supermarket is typically constructed as a giant faraday cage, often the only signal available is 3G. When trying to open the app at that particular transaction over 3G it takes an inordinate amount of time to load. This is frustrating, as you typically wants that transaction open quickly so that the details can be logged and you can continue, but as it stands you must wait for 30 seconds to a minute for it to load. Perhaps providing a “quick add” feature that lets you annotate without waiting? Or cut down the size of the payload in this case?
Sadly, this is quite a difficult issue to solve because in this particular case, the app is told that the device is online and that services are reachable but can be left waiting and unaware of bad network conditions under it.
iOS does do some very clever tricks to try and mitigate the issue but it requires multiple connections (such as both WiFi and 3G, WiFi and USB Ethernet, etc) or for you to move in to good connectivity temporarily for technologies such as background app refresh or other queued async actions to happen. I haven’t tested to see if the app already does this but certainly, using the content-available flag in push notifications to update the feed in the background would move this long load back to a point in time where you’re still at the PoS (being careful not to silently drain the battery in times of REALLY bad connectivity such as if the phone drops to GPRS). Reducing the size of the payload in general is good but most of the gains to be had are in TCP handshakes (TFO is good stuff!) and doing basic optimisation of network send buffers.
I could go on for quite some time about the difficulties of different network conditions but that’s about all I can think of that’s relevant. There is no real good answer here.
Interesting info, thanks! Multiple connections definitely isn’t going to be the solution in this case, of course. I personally have background app refresh turned off - it just saps the battery all day long, which is a trade-off I don’t take. I still think some sort of interstitial page, populated by the push notification (which does tend to come through fast) would be of use. A related example can be found in the omnifocus app - quick add is still available even when a sync is happening, which can take a long time over 3G with a large database.