サンプルのcouchbase liteサンプルアプリを試してみると、ホームボタンを押してアプリをバックグラウンドにするまでうまくいきました. アプリに戻ってフォアグラウンドに入ると、同期が機能しなくなり、nsnotifications の起動が停止します。再びフォアグラウンドに入ったときに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]];