1

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

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

4

1 回答 1

5

在 iOS 上,当应用程序“最小化”(实际上是在后台)时,您不能依赖任何正在运行的进程。您的进程可能因多种原因被操作系统杀死,无论如何,除非您有资格获得特殊的扩展后台处理,否则您的应用程序无法处理超过 10 分钟。

通常,对于聊天类型的应用程序,每次客户端收到消息时,同一个客户端都会发回一条消息,让服务器知道它已收到该消息。这样,如果您的服务器在几秒钟后没有收到消息已收到的信号,您可以假设该应用程序没有在设备上运行,而是可以通过推送发送消息。

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

于 2013-02-05T13:25:59.733 回答