0 Flares 0 Flares ×
Without offline connectivity, the utility of the app is limited, putting into question its ability to increase productivity. Offline app access is especially important to sales professionals who need to be able to access information such as price lists, past proposals and creditworthiness on the go. Logically, what is the point of having a survey application if you can’t see the survey or a service application if you can’t see the details of the service ticket? Such scenarios apply to variety of businesses and situations including work flow management, inspections and more. The ability to run an application against meaningful data even when the device is out of network range is still a problem for enterprise mobile apps running on smartphones and other mobile devices. The so called “offline storage” was recently available only on ‘native mobile’ applications, but now even browser based web applications have the ability to store and access data locally.
The appeal of an enterprise mobile apps is having access to vital information at any point in time and literally anywhere. The user could be in countless situations where he is out of coverage. Regardless he be in the basement or on a road leading to mountains he should be able to access app’s information.
The problem at hand can be tackled in various ways. For example, there are native apps, then web apps that leverage HTML5 capabilities to store data on the device, and the myriad “cross platform” frameworks that wrap a single code base including, but not necessarily HTML, in a native “shell”. Unfortunately this only solves the problem partially since a number of native apps still rely on internet to make this rich data available, and are useless once the connection is lost.
A complete solution would be to create a local persistent data store on the mobile device for use when off-line, and synchronizing data changes whenever network is established. This can be achieved in several ways, and with a different level of sophistication, robustness, performance and development costs, corresponding to each development approach.
One of the ways can be a robust architecture that assures persistence, such as the one of a hybrid, PhoneGap based application that accesses native SQL database through a plugin. To ensure that in the end of the design process you will have a solid enterprise mobile app in place, you must address these key offline data issues:
How to resolve conflict
Imagine a situation wherein a record has been stored on the mobile device, but was edited while the device was off line on both the device and the server during the same off line period. What happens next is that the device will attempt to update the server once is back on line, but which is the correct data to store in the system of record? The answer varies depending on the business scenario and business rules. According to David Akka, the 4 most common
ways to resolve the conflict are:
- Last attempted update wins
- Latest time stamp wins
- Server (or Mobile) always wins
- Prompt the user with the conflict and ask the user who wins
- Create a ‘Conflict Report’ and allow a user to release or reject changes
How to deal with service latency
Mobile device users tend to run several applications on their handsets. What happens when a user makes changes to data while being off line, and then quits the application? How are these changes uploaded when the device comes back to online mode? What is more important: for data to be updated quickly or to wait until the user decides to open the application again? The solution will vary depending on the platform that is being used, and whether it supports background/inter-process communications (very limited on iOS), and ultimately how creative is the code to get this done.
How fresh is your data
Is your mobile device working with volatile data? Will the same data previously acquired from the server be changed on the server, and in that case, when does the user need to be aware of these changes? Lets assume that the work order priority has changed form low to urgent after being synched to the mobile device. How important is for the user to know about that change? Should your scheme involve checking for updated data whenever an order is opened, or on some interval; or should the server send a notification whenever a relevant data change occurs?
How to deal with random service loss
When creating your enterprise mobile app you must plan for network loss to occur at any point in the application process cycle, so you can assure for the application to behave well whenever that happens. Moreover, besides checking for network connectivity prior to the attempt to send or retrieve data, the app should be aware that the connection state may change after the transaction has been initiated, and should react accordingly.
How to ensure data update performance
The application design should take into account the impact of data synchronization on the applications response time. If background synchronization occurs, it is crucial not to let that activity impact the user’s experience by bogging down responsiveness, or interrupting the flow of the application. You can tackle this issue with one of the following:
- by prompting the user for permission to execute a sync, so they can decide whether a data refresh is more important that the activity they are trying to complete
- only performing updates at points in the application flow that don’t impact the user’s flow
As provided in the above examples, the most important thing about your application is to assure it runs effectively even when in off-line mode which brings us to the point at hand. The ability to store offline data is just a small piece of the puzzle. Specifics like managing conflicts, scheduling updates and managing which data is important to accomplish the prescribed workflow must be fully understood and planned for in order to avoid potential pitfalls and ultimately ensure app’s success.
- 9 Nov, 2013
- 0 Comments