ios - 推送通知以进行即时消息传递

标签 ios apple-push-notifications

我在iOS中有一个即时通讯应用程序。我想使用推送通知让用户知道在最小化应用程序的情况下是否收到消息。
最初我已经实现了该应用程序,以便在最小化该应用程序时,该应用程序通知我的服务器,该服务器又与APNS联系以通知已收到消息。但是,该应用程序通知服务器存在延迟。因此,如果用户最小化该应用程序,并且同时向其发送消息,则他不会收到通知,因为我的服务器仍在向该应用程序而非APNS发送消息。

我想知道如何在聊天应用程序中克服这种情况。他们是否将所有聊天消息发送到APNS,而不管用户是否已最小化该应用程序。如果我将所有消息发送给APNS,那将是一个好的设计吗?

最佳答案

在iOS上,当应用“最小化”(实际上是在后台)时,您不能依赖任何正在运行的进程。操作系统可能会出于多种原因终止您的进程,在任何情况下,除非您有资格进行特殊的扩展后台处理,否则您的应用程序处理的时间不得超过10分钟。

通常,对于聊天类型的应用程序,每当客户端接收到一条消息时,同一客户端就会发回一条消息,以使服务器知道它已经收到了该消息。这样,如果您的服务器在几秒钟后仍未收到接收到该消息的信号,则可以假定该应用未在设备上运行,而可以通过推送发送该消息。

无需在客户端上使用过多的处理程序,这会耗尽电池电量,也无需为每条消息发送推送。

关于ios - 推送通知以进行即时消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14700939/

相关文章:

ios - APNs : Change the app badge while the app is the foreground

ios - 如何在出现之前过滤ios推送通知

查询 APNs 反馈服务器的 PHP 技术

ios - 限制来自某些 UITextField 的某些字符

ios - 不断增加应用程序内存(IOAccelResource)

iphone - iOS - 使用 APNS 处理推送通知

ios - 当应用程序在后台使用 Sinch iOS SDK 时无法处理来电推送通知

ios - 我是否需要个人 Apple 开发者帐户来发布与我的公司帐户分开的应用程序?

ios - 为什么我的图像有时无法在模拟器中显示?

ios - 缩放 CAShapeLayer 时的意外行为