Using the Sync Manager
The sync manager object handles simple sync up and sync down operations. For sync down, it sends authenticated requests to the server on your behalf, and stores response data locally in SmartStore. For sync up, it collects the records you specify from SmartStore and merges them with corresponding server records according to your instructions. Sync managers know how to handle authentication for Salesforce users and community users. Sync managers can store records in any user or global SmartStore instance—the default instance, or a named instance.
Sync manager classes provide factory methods that return customized sync manager instances. To use the sync manager, you create an instance that matches the requirements of your sync operation. For example, Mobile SDK provides a specialized sync manager class for layouts and another for metadata.
It is of utmost importance that you create the correct type of sync manager for every sync activity. If you don't, your customers can encounter runtime authentication failures.
Once you've created an instance, you can use it to call typical sync manager functionality:
- Sync down
- Sync up
- Resync
- Stop
- Restart
Sync managers can perform three types of actions on SmartStore soup entries and Salesforce records:
- Create
- Update
- Delete
If you provide custom targets, sync managers can use them to synchronize data at arbitrary REST endpoints.
At runtime, sync manager objects progress through three states:
accepting_syncs
—The sync manager can start sync operations.stopping
—The sync manager’sstop
method has been called.stopped
—All sync operations have stopped.
The sync manager can start sync operations only when it’s in the accepting_syncs
state. Calling the sync manager’s restart
method resets a stopping
or stopped
state to accepting_syncs
. If the restart
method is called with restartStoppedSyncs set to true, the sync manager calls reSync
on each stopped sync operation.
Swift Class | Objective-C Class |
---|---|
SyncManager | SFMobileSyncSyncManager |
In iOS, you use pairs of access and removal methods. You call the sharedInstance
class methods on the SFMobileSyncSyncManager
class to access a preconfigured shared instance for each scenario. When you're finished using the shared instance for a particular use case, remove it with the corresponding removeSharedInstance
method.
- Swift
- Objective-C
- Swift
- Objective-C
- Swift
- Objective-C
In Android, you use a different factory method for each of the following scenarios:
- For the current user:
- For a specified user:
- For a specified user in a specified community:
- For a specified user in a specified community using the specified SmartStore database:
Here's a Swift example of initializing the sync manager with a shared store.