We have requirement to build mobile with fully functional offline capabilities. As currently Salesforce1 has limited offline functionalities. We have decided to use the Mobile SDK to build the custom app.
Below are the requirements and the initial design of our app. So wanted to validate with you guys if this is correct approach.
You suggestions/improvements will be really appreciated.
Here are the Offline app requirements
App will be used by Salesforce users, distributors and Dealers.
App able to login from Salesforce user, Customer community and
Search/Create/Update/Delete access to all the records present for
objects like Contact, Account, Lead, Opportunities, Activities,
campaign data etc.
Store more than 50K records per object so it can be access in
Able to fetch CRM objects, custom objects, Salesforce CRM Content,
files, and extra storage.
Download the documents and videos when online and play it during
Upload the photo or video taken from the app then and there and when
User is online then sync back to Salesforce.
Access and store geolocation when the video is being played
Able to fetch reports and dashboards in offline mode
Overcome limitations of standard Salesforce app
Enabling Facebook or Twitter authentication for community login.
Access to few non Salesforce data and features without login.
Initial App design
Leverage Salesforce Mobile SDK
Using Partner community user instead of Customer community as we
want this app to be used by Distributors who can have their own
Initially, store whole data of an object in mobile when it was
accessed for the first time in app.
Based on your requirements I’d saying you’re certainly heading off in the right direction, and I believe you’ve thought through this pretty well. Based on our experience at MobileCaddy where we’ve developed a development and lifecycle framework for Salesforce mobile apps that often have a need for full offline support I have the following comments/points of note;
If you need full offline support, then you MUST work on an offline first model - and that means pulling all data down that a user might need right at the very start of the app
With (1) in mind be aware of data API usage as this could increase rapidly, and I don’t believe community users get an API quota OOTB with Salesforce. This is something we solved at MobileCaddy and now have a net-zero impact on API quotas.
Be aware that it’s not just data that needs to be offline, you also need to make sure your logic is fully offline too.
Take some time to think about conflict and error scenarios that might occur when you sync your data back to the platform. What are you going to do is a parent record has been deleted or shared away? How are you going to resolve conflicts when a record on the platform has also been modified whilst the mobile user was offline? How are you going to handle parent/child offline record creation? etc.
How are you going to push updates to your applications?