Background Sync
How to enable and configure background synchronization for ContactsManager
Background Sync
The ContactsManager SDK allows you to synchronize contacts even when your app is in the background. This ensures that your app always has the most up-to-date contact information, even if the user hasn’t opened the app recently.
Background sync is completely optional. Your app will work perfectly well without it, with contacts syncing when the app is in the foreground. Enable background sync only if you need real-time contact updates when your app isn’t actively being used.
Enabling Background Sync
To enable background sync, you need to:
- Configure your app with the proper capabilities and settings
- Call the
enableBackgroundSync()
method during app initialization
Platform-Specific Configuration
iOS Configuration
For iOS, you need to:
- Add the “Background Processing” capability to your app in Xcode:
- Open your app target’s “Signing & Capabilities” tab
- Click the ”+” button to add a capability
- Select “Background Processing” from the list
- Register the background task identifier in your Info.plist:
- Implement background task scheduling in your AppDelegate:
iOS Configuration
For iOS, you need to:
- Add the “Background Processing” capability to your app in Xcode:
- Open your app target’s “Signing & Capabilities” tab
- Click the ”+” button to add a capability
- Select “Background Processing” from the list
- Register the background task identifier in your Info.plist:
- Implement background task scheduling in your AppDelegate:
Android Configuration
Android support is coming soon.
The implementation will likely involve:
- Setting up WorkManager for periodic background tasks
- Configuring network permissions
- Handling battery optimization exceptions
Check back for detailed instructions.
React Native Configuration
React Native support is coming soon.
Implementation will require platform-specific native code for iOS and Android to enable background processing.
How Background Sync Works
When background sync is enabled, the ContactsManager SDK will:
- Register a background task with the system
- Periodically wake up in the background (based on system constraints and heuristics)
- Check for updated contacts on the device
- Synchronize any changes with the server
- Schedule the next background task
Background operations are designed to be efficient with minimal battery and data usage:
- Only changed contacts are synchronized
- Sync frequency is managed by the operating system based on usage patterns
- Network operations are batched to minimize battery impact
- Background tasks respect system constraints for memory and CPU usage
Limitations
Be aware of these platform-specific limitations:
- iOS: Background tasks are scheduled at the system’s discretion based on app usage patterns, network conditions, and battery status
- Android: Background operations may be restricted on some devices with aggressive battery optimization
Best Practices
For optimal background sync performance:
- Enable background sync early in your app’s lifecycle
- Handle initialization errors gracefully
- Don’t rely on exact timing of background operations
- Test background behavior thoroughly in real-world conditions
- Consider providing a manual sync option for users who want immediate updates