【发布时间】:2017-07-11 05:15:36
【问题描述】:
我想知道当其他用户与应用程序的用户交互时,Twitter、Facebook 和 WhatsApp 等社交网络应用程序如何实时更新其用户界面。举一个我能想到的最好的例子:当您在 WhatsApp 中打开一个聊天窗口时,当您与之聊天的用户与您互动时,UI 会自动更新(无需任何用户操作)。消息显示在您的屏幕上,无需刷新,并且当您的聊天伙伴离线或重新在线时,屏幕顶部的“最后一次看到”状态会自动更新。我可以想到两种方法来实现这一点:
- 远程推送通知:这种方法在我看来是“最干净”的方法,但它可能也是最危险的方法。在用户执行某项操作时使用静默通知 (
content-available) 将数据传递到另一台设备,可能会为您节省大量 HTTP 请求,因此会使您的应用程序消耗更少的数据和 CPU 使用率。这种方法的风险在于,用户可以轻松禁用所有推送通知以节省电池电量(包括静默通知),然后您的应用将无法远程收到有关事件的通知。 - 本地 UI 刷新:这种方法显然是最安全的,但我认为它真的很“讨厌”,最终每个人都会感觉到它的缺点。不断刷新 UI 并从数据库中重新检索数据以确保向用户显示最新消息和状态将是安全的,因为您的应用程序不必依赖设备的电池和后台模式设置,但是不利的一面是,这会使您的应用程序消耗大量数据和电池电量,这对用户的数据计划和他的设备不利。我也不认为 Apple 会批准一款消耗如此多数据和电量的应用。
我刚刚在自己的应用中实现了聊天功能,我想启用与 WhatsApp 使用的相同的实时 UI 更新。最好的方法是什么?我应该使用上述两种方法中的一种还是有人可以想到另一种方法来做到这一点?顺便说一句,我是一个相对较新的程序员,最近才学会了如何开发 iOS 应用程序 (Swift)。我离专业人士还很远,所以请在解释和工作方法能力上放轻松。谢谢!
【问题讨论】: