使用无声通知更新屏幕

Using silent notifications to update screen

在我的应用程序中,我使用 socketio 后端实现了聊天功能。 所有对话都分组在如下视图中:

静默通知是处理此屏幕更新的最佳方式吗?

当我向用户发送消息时,nodejs 服务器也会发送 "alert" 通知。

如何处理这两个通知,用户是否允许通知,应用程序是否在前台、后台等。

现在有点混乱,所以如果您对这个主题有一些解释,也许这不是正确的方法,谢谢。

您没有理由按原样对消息进行静默通知。当应用程序不在前台时,您可以发送普通 (non-silent) 通知或静默通知,具体取决于您的需要。

当不在前台时,静音将在您的情况下被丢弃,并且 non-silent 将可由用户按下,如果按下则应导航到应用程序内的适当屏幕。

当您在屏幕上提到时,最好接收通知并只处理这些通知。通知可能已经包含显示消息所需的所有数据,但有 2 个事实:

  1. 通知可能有点急躁,可能根本不会到达。我个人没有经历过,但这是我听到的。
  2. 通知的大小有限,因此可能不包含长消息或图像等大型数据集

话虽如此,您有时需要从服务器手动获取数据。因此,当在这样的屏幕上时,最好只是忽略通知并尝试每隔几秒获取一次数据。一个智能算法在这里会很好,如果用户来到这个屏幕或收到通知,它会将获取频率重置为一个小频率(每 3 秒更新一次),然后如果没有事件发生则开始丢弃,例如 30 秒以减少调用服务器。

你总是可以反过来做。您可以使用非常低的频率手动获取数据(例如 1 分钟),以便在通知失败时进行回退。然后在每次收到通知时获取数据。您必须再次偷偷摸摸,因为如果开始收到许多通知,您将再次对服务器进行过多调用。因此,您需要以某种方式锁定对服务器的调用,或者您可以在通知中发送 "preview" 数据并仅显示该数据。这意味着您将只发送一个前缀并显示 "Hi, how are y..." 或图像 "Sent you a photo"...

而不是完整的消息

另一个问题(仅显示来自通知的数据)是当您的设备数据不足时,事情可能会变得复杂。想象一下,您有 5 friends/conversations,突然有一条通知来自刚刚连接到您的第 6 个。你没有办法在你的视图中显示这个,因为你没有这个人的名字,没有图像,根本没有数据......所以你需要再次制作一个漂亮的架构,以便根据需要从服务器检索这些数据.