When building traditional client-server and Web applications, a typical assumption is that connectivity between the server and the client will be available all the time. If the client cannot access the server, the application will usually stop working or produce an error.
However, when working with mobile devices, this assumption is no longer valid. The device may experience occasional loss of connectivity, depending on the availability of a sufficiently strong signal. It may also switch between networking methods, such as from Wi-Fi to GPRS (General Packet Radio Service), as signal strength and availability changes. In addition, some applications may be specifically designed to only download or synchronize data on demand, such as in
the mornings and evenings when a travelling salesperson is within range of a corporate or home network, for example.
Therefore, mobile device applications must be designed in such a way that they can download or synchronize data, store it locally, and then upload local changes and resynchronize with the remote data store again at the appropriate times. This may be done automatically when a connection is available or on a predefined schedule, and take into consideration the communication costs of the different types of connections. It may be done only on demand, when the user has completed
specific tasks, or it may be a mixture of the two approaches, such as uploading new sales data automatically, but synchronizing the product catalog only on demand.
In addition, some activities may not be possible, depending on the current network type. For example, if only Wi-Fi is available, the device will not be able to use the phone or SMS features. Also consider the cost of data transfer. Reducing the volume of data that you transfer over the network can considerably reduce the user’s costs, especially when using the cellular phone network. Data transfer costs also vary considerably in different regions and countries of the world.