Overcome SF1 Limitations by Going Native!One of the biggest limitations to Salesforce1 for a mobile device is that for the most part it needs an internet connection to function well. There are a few offline capabilities, but they aren't very strong.
One of our clients has technicians that spend much of everyday in locations that do not have an internet connection. Their job assignments are made in Salesforce by a person working in the office and logged into Salesforce the typical way via browser, but the technicians are out on the road and logging into Salesforce from a computer is impractical, especially when they have their phones with them all the time (even if they don't have service much of the time).
Provide Offline Capability with Salesforce Native iOS ApplicationNot only did the technicians need a convenient way to see the jobs that they needed to do, they needed to a way to:
- Accept the job and confirm that they were going to take it
- See the details of the job and the assets against which they would be working
- Be able to log their conversations with on site personnel
- Log their travel and work time
- Update their status to indicate that they had completed the work or provide other feedback
- Perform inspections and fill out various forms
All this would frequently need to be done while offline.
To provide these capabilities we wrote a native iOS application designed for the Iphone since that is the device that their technicians have been given. (doing this for the Android is done the same way)
Salesforce Mobile SDKSalesforce provides a Salesforce Mobile SDK which gives us the tools to use Salesforce as the backend server to the Mobile device. So whenever we want to retrieve data from Salesforce and bring it to the mobile device or write data from the device back up to the Salesforce.com org, we can do so using the tools provided in the Salesforce Mobile SDK.
If you've used other mobile applications that sometimes expect to query data on the internet, you know how frustrating it can be when waiting for the application to make a connection attempt. It's like it never occurred to the designer that the device wouldn't have a connection at some point! We wanted to specifically avoid this frustration and instead built the Salesforce native mobile application from the ground up to only attempt a sync after testing that there was a connection or when the user specifically requested a sync.
Working off the GridSo we wrote the application pictured in the images posted above that would let a technician sync their phones at whatever point during the day that they had a connection. Then as they worked throughout the day, both with and without connections, the phone would work without pausing to check for connections. The rep could do any work needed on the device. Making status updates, logging conversations, logging time, making notes for their work, doing inspections, filling out required company forms - all of it, from the convenience of the device without needing an internet connection.
Later when "back on the grid" they can open the app, go to the sync page, and see a summary of work completed offline that is waiting for sync, then by clicking sync the device will login to Salesforce and upload all the work done while offline. At that time it will also pick up any new assignments or changes to affected records and bring them down from Salesforce to the Mobile Device.