如何将未读消息的iOS推送通知分组为一个

Posted

技术标签:

【中文标题】如何将未读消息的iOS推送通知分组为一个【英文标题】:How to group iOS push notifications for unread messages into a single one 【发布时间】:2020-10-30 13:35:52 【问题描述】:

我们在 ios 客户端上有一个 Messenger。

当您在设备上禁用互联网、接收许多消息并启用互联网时,设备会收到许多推送通知。我只想收到一条包含未读消息总数的推送通知。

如何从服务器端实现这一点?据我所知,APN 的配置是从服务器完成的。还是应该从客户端完成?

我读到了apns-collapse-id,它对我有帮助吗?会显示未读消息的总数吗?

【问题讨论】:

【参考方案1】:

在 iOS 中,Apple 推送通知服务包括一个执行存储转发功能的服务质量组件。如果 APNs 尝试发送通知并且目标设备处于离线状态,则 APNs 会在有限的时间段内存储通知,并在设备再次可用时发送通知。此组件仅存储每个设备和每个应用程序的最新通知。如果设备离线,发送针对该设备的通知请求会导致先前的请求被丢弃。因此,如果设备处于离线状态,它将始终收到最新通知。

现在,如果您的设备在线并且我们会收到设备的多条通知 iOS 默认情况下按应用对通知进行分组,因此如果您只需要在应用级别对所有通知进行分组,则无需执行任何操作由操作系统自己完成。但是,如果您需要根据某些主题对通知进行分组,iOS 对自定义分组也有很好的支持。更多自定义分组,可以参考:https://developer.apple.com/videos/play/wwdc2018/711/

我阅读了有关 apns-collapse-id 的信息,它对我有帮助吗?会不会显示 未读消息总数

apns-collapse-id 用于创建应替换为新通知的通知。因此,如果设备在线并收到多个具有相同 apns-collapse-id 的推送通知,则它会丢弃先前的通知并在通知中心显示新的通知。因此,通知中心将始终只有一个具有给定 apns-collapse-id 的通知。因此,在您的情况下,您可以通过在请求标头中设置 apns-collapse-id 并始终在通知正文中发送更新的未读消息计数来利用它,因此在这种情况下,总会有只是通知中心的一个通知,将被服务器一次又一次地替换为新发送的计数。确保为所有通知设置相同的 apns-collapse-id。有关 apns-collapse-id 的更多信息,您可以参考: https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns/

【讨论】:

以上是关于如何将未读消息的iOS推送通知分组为一个的主要内容,如果未能解决你的问题,请参考以下文章

如何清除 iOS 的远程推送通知?

Socket,长连接,消息推送,消息提醒,未读消息提醒,消息通知,未读消息通知

保存收到的远程推送通知 - ios

迁移到 iOS VoIP 推送通知

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知

iOS 推送通知 - 向所有人发送消息