Orando Labs EnduroSync is a new product that does exactly what you ask for. There are clients for iOS and Android, with more profitable ones.
Full disclosure: I work in Orando labs.
EnduroSync clients allow you to create object data stores on local devices. Clients are quite complex - the data is modeled as its own objects for each client we support (iOS and Android now, are getting closer). Customers work offline and online. Data is stored locally in the sqlite database.
As objects in your model change, deltas are written to the device. At some point, you can “synchronize” the object's data store. Synchronization uses the / push / pull commit process (e.g. git), but this is not visible to you. Synchronization allows you to update a local copy on any server and send any changes you make. Conflicts are resolved using timestamp aggregation, so newer data is not overwritten by older data.
EnduroSync is an online service, so there is no server installation on your server.
There is also a flexible permission system that allows you to share object data stores in a variety of ways. For example, most applications will have one or more object data stores for each user, for preferences, notes, tags, etc. You can also exchange data storages about objects for each application, for each type of user and using wild cards, in other ways.
So basically you use our client SDK to model your data on the device. Modeling is performed using simple objects in a programming language in the device language. If you sign up for synchronization services, you also get synchronization.
source share