我们在我们的应用程序中使用 MongoDB Realm。
用户第一次连接到应用程序时,ProgressNotifcation 回调被正确触发,并且每当有新的下载到来时它就会工作并触发。即使没有挂起的下载,也会触发 ProgressNotification 回调(回调中的 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
}
编辑 - 21/12/2020
为了澄清起见,返回的令牌包含一个值,并且 .invalidate 没有被调用。
会话中没有错误,任何新下载都会触发回调。初次下载后,一切都按预期工作。这意味着当我稍后添加 progressNotifcation 时,会立即触发回调,并与之前下载的进度一起。但如果没有初始下载,则永远不会调用回调。
对于作用域,这个方法实际上是在我创建的自定义发布者中,并且没有被释放。
领域 10.5.0
iOS 14.3