如何在后台连续复制数据

问题描述 投票:1回答:1

在我的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];
}

我已经尝试根据长沙发文档中的建议使用NSThread调用此函数

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

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

我的要求是连续同步来自Sofaserver的实时供稿。是的,它会耗尽电池电量。有什么建议吗?

ios couchbase couchbase-lite
1个回答
3
投票
  • [连续运行:在复制器对象上有一个名为continuous的属性(在代码示例中已启用),它告诉它侦听本地数据库(用于推式复制)和远程数据库上的更改。数据库(用于请求复制)。这将不断得到更改,直到您调用replication.stop()

  • 在后台连续运行:在后台连续运行复制(当应用程序关闭时)会有些棘手。我写了一篇关于在iOS(http://blog.couchbase.com/ios-background-fetch-to-sync-hacker-news-stories)上使用后台提取API的文章。操作系统将定期唤醒后台获取服务并启动一次快照复制。另一种方法是在收到来自服务器的静默推送通知时启动复制。

© www.soinside.com 2019 - 2024. All rights reserved.