アプリで MongoDB Realm を使用しています。
ユーザーがアプリに初めて接続すると、ProgressNotifcation コールバックが正しくトリガーされ、新しいダウンロードが来るたびに機能してトリガーされます。保留中のダウンロードがない場合でも、ProgressNotification コールバックが少なくとも 1 回 (作成時に) トリガーされます (コールバックの Progress オブジェクト パスには、最後のダウンロードからの値が含まれます)。これは、ユーザーの最初のデータセットをダウンロードしているためだと思います。
ただし、アプリを強制終了して再度起動すると、アプリが新しいデータを受信するまで、ProgressNotification コールバックはトリガーされなくなります。この時点から、コールバックは必要になるたびに呼び出されます。
現在、フレームワークは、アプリが起動されてから、必要なたびに ProgressNotification コールバックをトリガーするための最初のダウンロードが必要なようです。
これは、以前のバージョンの Realm (5.XX) で機能していました。Realm 10 への移行を完了したばかりで、この問題を発見しました。これが意図した変更なのか、それとも私の側のバグなのかわかりません。しかし、これが以前のバージョンの SDK で機能していたことは確かです。
誰でもこれで私を助けることができますか?ありがとう
注: これは両方のモードで動作しなくなりました: .forCurrentlyOutstandingWork と .reportIndefinitely
例
self.token = syncSession.addProgressNotification(for: .download, mode: .forCurrentlyOutstandingWork) { progress in
.......Some code........ <- this part of the code is not triggered anymore
}
編集-2020年12月21日
明確にするために、返されるトークンには値が含まれており、.invalidate は呼び出されていません。
セッションにエラーはなく、新しいダウンロードによってコールバックがトリガーされます。最初のダウンロード後、すべてが期待どおりに機能します。これは、後で progressNotifcation を追加すると、コールバックが直前のダウンロードの進行状況ですぐにトリガーされることを意味します。ただし、最初のダウンロードがない場合、コールバックは呼び出されません。
スコープについては、このメソッドは実際には私が作成したカスタム パブリッシャーにあり、割り当てが解除されていません。
レルム 10.5.0
iOS 14.3