Попробовав образец приложения Couchbase lite, он отлично работает, пока я не переведу приложение в фоновый режим, нажав кнопку «Домой». Когда я возвращаюсь в приложение, и оно выходит на передний план, синхронизация перестает работать, и nsnotifications перестают срабатывать. Каков наилучший способ продолжить синхронизацию Couchbase lite, когда он снова выйдет на передний план? Почему он вообще перестает получать эти уведомления?
Вот пример.
https://github.com/couchbaselabs/Grocery-Sync-iOS
- (void)updateSyncURL {
...
// Tell the database to use this URL for bidirectional sync.
// This call returns an array of the pull and push replication objects:
NSArray* repls = [self.database replicateWithURL: newRemoteURL exclusively: YES];
if (repls) {
_pull = repls[0];
_push = repls[1];
_pull.continuous = _push.continuous = YES;
// Observe replication progress changes, in both directions:
NSNotificationCenter* nctr = [NSNotificationCenter defaultCenter];
[nctr addObserver: self selector: @selector(replicationProgress:)
name: kCBLReplicationChangeNotification object: _pull];
[nctr addObserver: self selector: @selector(replicationProgress:)
name: kCBLReplicationChangeNotification object: _push];
}
}
Должен ли я просто установить наблюдатель, чтобы приложение вышло на передний план и снова запустило updateSyncURL? Если да, то лучше ли добавлять этого наблюдателя только тогда, когда приложение переходит в фоновый режим, и удалять после того, как оно выходит на передний план? Или это не имеет значения с точки зрения эффективности/передовой практики?
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateSyncURL) name:UIApplicationDidBecomeActiveNotification object:[UIApplication sharedApplication]];