Implement a drop-in Core Data to Parse sync solution that can be easily implemented on most existing iOS Core Data application. A simple tableView application using Core Data will be provided where the sync solution will be implemented and tested. This will be extensively verified across several devices. A parse account will also be provide for debug and testing.
- Implement a drop-in Core Data to Parse sync solution that can be easily plugged into current iOS apps using Core Data with minimal impact.
- Must provide clear instructions on how to add the solution to an existing Core Data iOS application.
- Must be able to dynamically adjust/create Parse objects and columns to match Core Data model changes (w/out the need to manually update or create - -- Parse objects/columns or initially set up Parse).
- Must be able to handle record deletes, reads, updates and creation.
- During sync update conflicts, the most recent updates wins (with the option to use Parse server updatedAt time or client UpdatedAt time - the latter using the updated time from the mobile client to resolve conflict). You may implement Parse Cloud Code if needed for this.
Important: Must batch Parse updates (like using [url removed, login to view]) as much as possible to limit the number of API calls per sync execution. Limit to around 8 - - API calls or less per sync regardless of the number of records/items to be updated (that is within the maximum items allow by Parse).
- The sync solution must implement Delta Sync efficiently (allowing fast syncs), sync changes that only happened since the last sync call.
- Must provide option for in-progress, error, and success/completed blocks to allow implementation of in-progress spinner and alerts.
Important: Sync must occur as a background operation (will not halt App normal operation while sync is in progress).
- Alerts when sync is attempted when no network is available.
- This sync solution will allow local use of Core Data without issues when no network is available.
- Provide a method that can be called for manual sync and timed sync (a sync button on the simple application will trigger the manual sync). This method syncs ALL entities.
- Provide the ability to tag each Core Data Entity (you may use metadata) whether it is to be synced or not (local only entity vs. sync-able entity).
- Must be able to handle sync when logged-in to a specific Parse User account (access only those records that belongs to that Parse User account or Current User).
- Able to handle initial sync (data push) of all local objects to Parse efficiently (speed will be compared to other sync solutions).
- Ability to merge local objects with Parse objects on a new device when Parse User account is created and logged in.
- The App could be used without a parse user account and without sync capability initially. Sync is then enabled when a Parse user account is created and user is logged in.
- This must work on iOS7 and iOS8 and using the latest Parse iOS SDK.
- NO Magical Record for this sync solution.
- Syncing Strings, Numbers and NSData (image) will be will be verified.
- This must work on our simple application provided which has one-to-many relationships between entities.
- Must be able to handle Core Data cascaded deletes (deletes corresponding items in parse).
- Code Implementation must separate Parse related code and Core Data related code.
- We expect the code to be well commented (as to it's purpose)
- We'll have the right to use the software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.
- You may use FTASync implementation as reference ([url removed, login to view]). (note: FTASync has not seen any updates since 2 years ago and this uses Magical Record).
Budget is $200 - $300
7 freelancers estão ofertando em média $249 para esse trabalho
Dear client, I have 4 years of experience in mobile apps development, I would like to discuss more on this. can you please initiate personal chat here. Thanks Milen