Si vous avez un coup d'oeil guide de lite-iOS Couchbase sur la réplication, il y a Observing and monitoring replications.
Vous pouvez la mettre en œuvre ainsi:
Objective-C
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(replicationChanged:)
name: kCBLReplicationChangeNotification
object: push];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(replicationChanged:)
name: kCBLReplicationChangeNotification
object: pull];
- (void) replicationChanged: (NSNotification*)n {
// The replication reporting the notification is n.object , but we
// want to look at the aggregate of both the push and pull.
// First check whether replication is currently active:
BOOL active = (pull.status == kCBLReplicationActive) || (push.status == kCBLReplicationActive);
self.activityIndicator.state = active;
// Now show a progress indicator:
self.progressBar.hidden = !active;
if (active) {
double progress = 0.0;
double total = push.changesCount + pull.changesCount;
if (total > 0.0) {
progress = (push.completedChangesCount + pull.completedChangesCount)/total;
}
self.progressBar.progress = progress;
}
}
Swift:
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "replicationChanged:",
name: kCBLReplicationChangeNotification,
object: push)
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "replicationChanged:",
name: kCBLReplicationChangeNotification,
object: pull)
func replicationProgress(n: NSNotification) {
// The replication reporting the notification is n.object , but we
// want to look at the aggregate of both the push and pull.
// First check whether replication is currently active:
let active = pull.status == CBLReplicationStatus.Active || push.status == CBLReplicationStatus.Active
self.activityIndicator.state = active
// Now show a progress indicator:
self.progressBar.hidden = !active;
if active {
var progress = 0.0
let total = push.changesCount + pull.changesCount
let completed = push.completedChangesCount + pull.completedChangesCount
if total > 0 {
progress = Double(completed)/Double(total);
}
self.progressBar.progress = progress;
}
}
Note: Une réplication continue restera indéfiniment actif, guettant d'autres changements à se produire et les transférer. Donc, je vous recommande de lire les différents types de réplication ainsi que les indicateurs d'état de réplication.
Malheureusement, cela ne fonctionne pas parce que le pull.changesCount ne cesse d'augmenter alors que la réplication est en cours, ce qui rend le pourcentage est bloqué quelque part autour de 80% pendant une longue période. Ce n'est pas fiable de cette façon. – Round
Ouais! malheureusement, changesCount ne vous donne pas de valeurs totales en un coup. Le rapport de progression n'aide pas si vous voulez montrer la traction progressive, précisément. –
Vous pouvez essayer de signaler un problème sur le dépôt Github ou contacter la communauté de développeurs dans [google group] (https://groups.google.com/forum/#!forum/mobile-couchbase) –