当应用程序从后台恢复时,Couchbase Lite会停止同步

时间:2013-12-29 04:54:15

标签: ios7 couchbase nsnotificationcenter couchbase-lite

尝试示例couchbase lite示例应用程序,它很有效,直到我通过点击主页按钮将应用程序放在后台。当我返回应用程序并进入前台时,同步停止工作并且通知停止触发。什么是让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]];

2 个答案:

答案 0 :(得分:1)

看起来如果我将复制设置为“持久”,它将在应用程序后台恢复

e.g。

_pull.persistent = YES;

答案 1 :(得分:0)

我从应用程序中调用它:didFinishLaunchingWithOptions。对我的应用程序的快速测试显示,它在进入主屏幕并返回后成功复制。