swift - 使用 Firestore Cloud 功能与在应用程序中使用活动侦听器不同吗?
问题描述
几个星期以来,我一直试图找到我的问题的答案,但没有任何运气。
我有一个 swift 应用程序,它在屏幕上显示一些标签。我希望标签文本在每天午夜更改,并且我希望能够决定标签应该从我的机器上说什么。
我被告知要使用主动侦听器或云功能。
下面的视频展示了一个开发人员使用 Firebase 云功能在应用程序上实时更改文本。
https://www.youtube.com/watch?v=Z87OZtIYC_0
这与也这样做的积极听众有什么不同?
客观地说,什么更适合我的用例?
解决方案
要在午夜执行功能以更改 UI,首先需要打开应用程序。如果应用程序甚至没有打开,那么就没有要更新的 UI。因此,使用此功能为服务器分配任务是没有意义的,因为该应用程序甚至可能未打开。无论如何,更新 UI 的任务应该是客户端的责任。
因此,在客户端(在您的应用程序中)创建一个计时器,该计时器在每个午夜进行调用以从填充标签的服务器获取数据。您需要创建一个在几秒钟内到午夜Timer
触发的对象,n
其间隔为 1 天,无限重复。它可能看起来像这样:
var midnightTimer: Timer?
midnightTimer = Timer(fire: Date().addingTimeInterval(secondsToMidnight), interval: oneDayInSeconds, repeats: true) { (timer) in
self.updateLabels()
}
RunLoop.main.add(midnightTimer!, forMode: .common)
推荐阅读
- javascript - 了解后端
- kubernetes - GKE 集群无法从同一项目(GitLab Kubernetes 集成)中的 GCR 注册表中提取(ErrImagePull):为什么?
- crystal-lang - 输出当前光纤,直到 FD 有一些数据
- javascript - 如何使用 babel-loader 转换 node_modules 模块?
- matlab - 如何将 .bib 文件读取为文本并将其分隔为文献计量目标的字段?
- spring-cloud-contract - Spring Cloud Contract 无法从 Nexus 查找/下载工件,存根模式远程
- javascript - 随机选择数组中的元素一次,同时跟踪它们的原始位置 - JavaScript
- php - 什么用于 parse_str(),因为 json_last_error() 用于 json_decode()?
- reactjs - Leaflet 在 React 应用程序中使用新数据重新渲染地图
- python - 编辑器中缺少 Pycharm 依赖项 - 在指定文件夹中安装了 requirements.txt