在我的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的实时供稿。是的,它会耗尽电池电量。有什么建议吗?
[连续运行:在复制器对象上有一个名为continuous
的属性(在代码示例中已启用),它告诉它侦听本地数据库(用于推式复制)和远程数据库上的更改。数据库(用于请求复制)。这将不断得到更改,直到您调用replication.stop()
。
在后台连续运行:在后台连续运行复制(当应用程序关闭时)会有些棘手。我写了一篇关于在iOS(http://blog.couchbase.com/ios-background-fetch-to-sync-hacker-news-stories)上使用后台提取API的文章。操作系统将定期唤醒后台获取服务并启动一次快照复制。另一种方法是在收到来自服务器的静默推送通知时启动复制。