我在iOS上有一个即时通讯应用程序。我想使用推送通知让用户知道他是否在应用程序最小化时收到了消息。 最初我实现了应用程序,以便在应用程序最小化时,应用程序通知我的服务器,然后联系APNS以通知收到消息。但是应用程序通知服务器有延迟。因此,如果用户最小化应用程序,并且同时向他发送消息,则他不会收到通知,因为我的服务器仍然将消息发送到应用程序而不是APNS。
我想知道如何在聊天应用中克服这种情况。他们是否向APNS发送所有聊天消息,无论用户是否已最小化应用程序。如果我向APNS发送所有消息将是一个很好的设计?
答案 0 :(得分:3)
在iOS上,您不能依赖应用程序“最小化”(实际上在后台)时正在运行的任何进程。您的过程可能会被操作系统杀死,原因有多种,除非您有资格获得特殊的扩展后台处理,否则您的应用程序无法处理超过10分钟。
通常,对于聊天类型的应用程序,每次客户端收到消息时,同一客户端都会发回消息,让服务器知道它已收到所述消息。这样,如果您的服务器没有收到几秒钟后收到消息的信号,您可以认为应用程序没有在设备上运行,而是可以通过推送发送消息。
不需要在客户端上使用过多的处理器来耗尽电池,也不需要为每条消息发送推送。