couchbase ios sdk - 如何在后台连续复制数据。

时间:2016-04-17 13:29:41

标签: ios couchdb couchbase couchbase-lite

在我的ios应用中,我设置了拉复制。这是代码

- (void) prepareCouchBaseAuthentication : (NSArray *)arrUserId {
NSError* error;

CBLManager* mng = [CBLManager sharedInstance];
CBLDatabase *database = [mng databaseNamed: kDatabaseScore error: &error];

if (!database) {
    [self showAlert: @"Couldn't open database" error: error fatal: YES];
    return;
}

NSURL* serverDbURL = [NSURL URLWithString: kServerScoreURL];


objAppDelegete.pull = [database createPullReplication: serverDbURL];
objAppDelegete.pull.continuous =YES;

objAppDelegete.pull.channels = arrUserId;


NSNotificationCenter* nctr1 = [NSNotificationCenter defaultCenter];
[nctr1 addObserver: self selector: @selector(replicationProgressScore:)
              name: kCBLReplicationChangeNotification object: objAppDelegete.pull];

[objAppDelegete.pull start];
}

我已尝试按照couchbase文档中的建议使用NSThread调用此函数

[NSThread detachNewThreadSelector: @selector(prepareCouchBaseAuthentication) toTarget:self  withObject: nil];

但过了一段时间它会停止同步?同步时是否有任何异常。如何检查是否发生任何异常?

我的要求是来自couchserver的连续同步实时Feed。是的它会耗尽电池。 有什么建议吗?

1 个答案:

答案 0 :(得分:3)

  • 连续运行:复制器对象上有一个名为continuous的属性(在代码示例中已启用),告诉它侦听本地数据库的更改(用于推送复制)和远程数据库(用于拉动复制)。在您致电replication.stop()

  • 之前,系统会不断进行更改
  • 在后台持续运行:在后台连续运行复制(当应用关闭时)有点棘手。我写了一篇关于在iOS上使用背景提取API的帖子(http://blog.couchbase.com/ios-background-fetch-to-sync-hacker-news-stories)。操作系统将定期唤醒后台获取服务并启动单次拉取复制。另一种方法是在从服务器接收静默推送通知时启动复制。