ios - 使用无声通知更新屏幕

标签 ios swift push-notification silent-notification

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

enter image description here

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

当我向用户发送消息时,nodejs 服务器也会发送“警报”通知。

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

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

最佳答案

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

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

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

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

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

你总是可以反过来做。您可以使用非常低的频率手动获取数据(例如 1 分钟),以便在通知失败时进行回退。然后在每次收到通知时获取数据。您必须再次偷偷摸摸,因为如果开始收到许多通知,您将再次对服务器进行过多调用。因此,您需要以某种方式锁定对服务器的调用,或者您可以在通知中发送“预览”数据并仅显示该数据。这意味着您将只发送一个前缀,而不是完整的消息,并显示“嗨,你好吗……”或图片“给你发了一张照片”……

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

关于ios - 使用无声通知更新屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49320464/

相关文章:

Android & iOS接入号码拨号

ios - 滚动关闭并返回 View 时 UITableViewCell 样式重置

ios - 允许 Swift 函数参数有多种类型

ios - 我尝试在 iPhone 的后台显示 FCM 通知,但是当我使用 Swift 发送此通知时它不起作用

ios - @react-native-firebase/messaging : TypeError: (0 , _messaging.default)(...).registerForRemoteNotifications 不是一个函数

c# - 使用 Azure 消息中心的 Xamarin Forms 推送通知无法在 Release模式下工作

ios - NSURLSessionConfiguration HTTPAdditionalHeaders 未设置

iphone - UrbanAirship/推送通知注册 : NSURLErrorDomain: bad url

ios - 如何加入多个 observeSingleEvent() 调用结果并在所有调用完成后执行操作?

ios - 使用 iBeacon 的安全标签