ios - 有没有办法让 CoreData 与服务器 API 保持同步,即使应用程序处于后台/暂停/终止状态?

标签 ios swift core-data synchronization chat

我正在尝试制作一个完全像 WhatsApp 的应用程序,到目前为止最大的限制是当用户在一段时间后重新打开应用程序并转到 Conversation View 时,新消息在应用程序处于后台/暂停或终止状态期间发送必须从服务器 (API) 恢复,这会导致潜在的延迟新消息显示在 Conversation View 中。

如何使用服务器 API 实现应用程序的永久同步?我很确定像 WhatsApp 这样的应用程序能够做到这一点,因为当您在一段时间后重新打开应用程序时,消息似乎永远不会被下载,对吗?

模仿这种行为的正确方法是什么?我真的很想学习如何执行这种“高级”同步,但我不知道从哪里开始。同样,我的目标是尝试避免在用户重新进入 Conversation View 时服务器下载新的 Message(例如,因为那会是糟糕的 UX)

提前致谢!

最佳答案

您的应用需要推送通知。这是此类应用的必备

在服务器上,当您知道有新消息时,向应用程序发送推送通知。这会让应用程序知道有消息要阅读。此时应用程序可以标记应用程序图标,弹出警报并显示在通知屏幕上。用户控制通知的显示方式。

此处有关通知的详细信息: https://developer.apple.com/notifications/

您的应用可以在收到通知时加载所有消息。

iOS 应用确实有一些有限的后台进程选项:https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

关于ios - 有没有办法让 CoreData 与服务器 API 保持同步,即使应用程序处于后台/暂停/终止状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45655449/

相关文章:

objective-c - 没有从 Core Data 获取数据

ios - 核心数据获取一对多关系数据

iphone - 将核心数据的属性的所有值加载到数组中

ios - 为什么 CPTPlotSpaceAnnotation 出现在离绘图符号很远的地方

ios - swift OutputStream 找不到成员 "write"

Swift Navigation Controller 轻扫以返回任何地方

json - 使用 json 数据将 curl post 形成为 swift http post

ios - 视频标签在 iPhone Safari 或 Chrome 和某些 iPad 上不起作用

ios - 当从 UISplitViewController 显示时,UITableViewController 自动滚动停止考虑键盘

swift - 为什么 NSFileManager 不能与 UIDocumentBrowserViewController 一起使用?